diff options
author | Father Chrysostomos <sprout@cpan.org> | 2011-08-16 14:57:47 -0700 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2011-08-17 12:33:37 -0700 |
commit | bad4ae388d7276039782b23915670f267acaff1d (patch) | |
tree | 5ffcb707b471358f918fd2da2bf6ad8f528a89a4 /pod | |
parent | 656b40dad946c5783030da9c7bd125c68dcfbb80 (diff) | |
download | perl-bad4ae388d7276039782b23915670f267acaff1d.tar.gz |
[perl #96126] Allocate CvFILE more simply
See the thread starting at:
http://www.nntp.perl.org/group/perl.perl5.porters/2011/07/msg175161.html
Instead of assuming that only Perl subs have mallocked CvFILEs and
only under threads, resulting in various hackery to borrow parts of
the SvPVX buffer where that assumption proves wrong, we can simply
add another flag (DYNFILE) to indicate whether CvFILE is mallocked,
instead of trying to use the ISXSUB flag for two purposes.
This simplifies the code greatly, eliminating bug #96126 in the pro-
cess (which had to do with sv_dup not knowing about the hackery that
this commit removes).
I removed that comment from cv_ckproto_len about CONSTSUBs doubling up
the buffer field, as it is no longer relevant. But I still left the
code as it is, since it’s better to do an explicit length check.
Diffstat (limited to 'pod')
-rw-r--r-- | pod/perldelta.pod | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/pod/perldelta.pod b/pod/perldelta.pod index e4e45dc346..0c9488a9aa 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -585,6 +585,13 @@ comma operator, which gives all but the last item void context. There is no such thing as void lvalue context, so it was a mistake for Perl to try to force it [perl #96942]. +=item * + +Every subroutine has a filename associated with it, that the debugger uses. +The one associated with constant subroutines used to be misallocated when +cloned under threads. Consequently, debugging threaded applications could +result in memory corruption [perl #96126]. + =back =head1 Known Problems |