* whether PL_comppad and PL_curpad are consistent and whether they have
* active values */
+#ifndef PERL_MAD
+# define pad_peg(label)
+#endif
+
#ifdef DEBUGGING
# define ASSERT_CURPAD_LEGAL(label) \
+ pad_peg(label); \
if (PL_comppad ? (AvARRAY(PL_comppad) != PL_curpad) : (PL_curpad != 0)) \
Perl_croak(aTHX_ "panic: illegal pad in %s: 0x%"UVxf"[0x%"UVxf"]",\
label, PTR2UV(PL_comppad), PTR2UV(PL_curpad));
# define ASSERT_CURPAD_ACTIVE(label) \
+ pad_peg(label); \
if (!PL_comppad || (AvARRAY(PL_comppad) != PL_curpad)) \
Perl_croak(aTHX_ "panic: invalid pad in %s: 0x%"UVxf"[0x%"UVxf"]",\
label, PTR2UV(PL_comppad), PTR2UV(PL_curpad));
? AvARRAY((AV*)(AvARRAY(padlist)[1]))[po] : NULL;
-#define PAD_SET_CUR_NOSAVE(padlist,n) \
- PL_comppad = (PAD*) (AvARRAY(padlist)[n]); \
+#define PAD_SET_CUR_NOSAVE(padlist,nth) \
+ PL_comppad = (PAD*) (AvARRAY(padlist)[nth]); \
PL_curpad = AvARRAY(PL_comppad); \
DEBUG_Xv(PerlIO_printf(Perl_debug_log, \
"Pad 0x%"UVxf"[0x%"UVxf"] set_cur depth=%d\n", \
- PTR2UV(PL_comppad), PTR2UV(PL_curpad), (int)(n)));
+ PTR2UV(PL_comppad), PTR2UV(PL_curpad), (int)(nth)));
-#define PAD_SET_CUR(padlist,n) \
+#define PAD_SET_CUR(padlist,nth) \
SAVECOMPPAD(); \
- PAD_SET_CUR_NOSAVE(padlist,n);
+ PAD_SET_CUR_NOSAVE(padlist,nth);
#define PAD_SAVE_SETNULLPAD() SAVECOMPPAD(); \
*/
#define PAD_COMPNAME_FLAGS(po) SvFLAGS(*av_fetch(PL_comppad_name, (po), FALSE))
-#define PAD_COMPNAME_FLAGS_isOUR(po) (PAD_COMPNAME_FLAGS(po) & SVpad_OUR)
+#define PAD_COMPNAME_FLAGS_isOUR(po) \
+ ((PAD_COMPNAME_FLAGS(po) & (SVpad_NAME|SVpad_OUR)) == (SVpad_NAME|SVpad_OUR))
#define PAD_COMPNAME_PV(po) SvPV_nolen(*av_fetch(PL_comppad_name, (po), FALSE))
#define PAD_COMPNAME_TYPE(po) pad_compname_type(po)
#define PAD_COMPNAME_OURSTASH(po) \
- (GvSTASH(*av_fetch(PL_comppad_name, (po), FALSE)))
+ (OURSTASH(*av_fetch(PL_comppad_name, (po), FALSE)))
#define PAD_COMPNAME_GEN(po) SvCUR(AvARRAY(PL_comppad_name)[po])