summaryrefslogtreecommitdiff
path: root/pad.h
diff options
context:
space:
mode:
authorGerard Goossen <gerard@ggoossen.net>2009-12-08 20:41:28 +0100
committerRafael Garcia-Suarez <rgs@consttype.org>2009-12-16 10:18:01 +0100
commit8c63ea58497f2deb05596f96547d19395545a0ee (patch)
tree4d7f56a670ce22d0c7c2f4c2ddb75d2d999bf067 /pad.h
parent7e8f1eacdace90501f4e820697697c9c339efa6f (diff)
downloadperl-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.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/pad.h b/pad.h
index 986f7c29e5..8602eda7f7 100644
--- a/pad.h
+++ b/pad.h
@@ -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", \