diff options
author | Gerard Goossen <gerard@ggoossen.net> | 2009-12-08 20:41:28 +0100 |
---|---|---|
committer | Rafael Garcia-Suarez <rgs@consttype.org> | 2009-12-16 10:18:01 +0100 |
commit | 8c63ea58497f2deb05596f96547d19395545a0ee (patch) | |
tree | 4d7f56a670ce22d0c7c2f4c2ddb75d2d999bf067 /pad.h | |
parent | 7e8f1eacdace90501f4e820697697c9c339efa6f (diff) | |
download | perl-8c63ea58497f2deb05596f96547d19395545a0ee.tar.gz |
Store the PL_compcv instead of the the PL_comppad in parser stack, and make it reference counted. Properly solves [perl #66094]
Diffstat (limited to 'pad.h')
-rw-r--r-- | pad.h | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -249,7 +249,8 @@ Restore the old pad saved into the local variable opad by PAD_SAVE_LOCAL() PTR2UV(PL_comppad), PTR2UV(PL_curpad))); #define PAD_RESTORE_LOCAL(opad) \ - PL_comppad = opad && SvIS_FREED(opad) ? NULL : opad; \ + assert(!opad || !SvIS_FREED(opad)); \ + PL_comppad = opad; \ PL_curpad = PL_comppad ? AvARRAY(PL_comppad) : NULL; \ DEBUG_Xv(PerlIO_printf(Perl_debug_log, \ "Pad 0x%"UVxf"[0x%"UVxf"] restore_local\n", \ |