summaryrefslogtreecommitdiff
path: root/pad.c
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2010-12-08 11:11:07 -0800
committerFather Chrysostomos <sprout@cpan.org>2010-12-08 11:13:24 -0800
commit3aadd5cd55cb7dedef11ffce3eef74f924ccd1bb (patch)
tree05d123eb6a67b12f0821d454acb9a72b2f58f2f6 /pad.c
parent8e88cfee26d866223a6b3bfffce6270271de00db (diff)
downloadperl-3aadd5cd55cb7dedef11ffce3eef74f924ccd1bb.tar.gz
[perl #19135] string eval turns off readonlyness on lexicals
Don’t turn off readonliness on lexicals when freeing pad entries. The readonliness is (prior to this commit) turned off explicitly in pad_free under ithreads. See also bug #19022, which resulted from the same change. There is some discussion there, too, but nobody seemed to know exactly why the readonliness needed to be turned off. Change 4761/2aa1bed, from January of 2000, added that SvREADONLY_off. It is supposed to make sure that pad entries that were constants will not be constants the next time they are used. Dave Mitchell writes: > I think...[this]...fix is correct (just removing the SvREADONLY_off). > The issue it was trying to fix appears to have been properly fixed > later by 3b1c21fabed159100271bd60bac3f870f5ac16af, which is why it's > safe to remove it. So this commit just deletes that code.
Diffstat (limited to 'pad.c')
-rw-r--r--pad.c5
1 files changed, 0 insertions, 5 deletions
diff --git a/pad.c b/pad.c
index 9b8cda5df2..8ab34ff465 100644
--- a/pad.c
+++ b/pad.c
@@ -1450,11 +1450,6 @@ Perl_pad_free(pTHX_ PADOFFSET po)
if (PL_curpad[po] && PL_curpad[po] != &PL_sv_undef) {
SvPADTMP_off(PL_curpad[po]);
-#ifdef USE_ITHREADS
- /* SV could be a shared hash key (eg bugid #19022) */
- if (!SvIsCOW(PL_curpad[po]))
- SvREADONLY_off(PL_curpad[po]); /* could be a freed constant */
-#endif
}
if ((I32)po < PL_padix)
PL_padix = po - 1;