struct padlist {
SSize_t xpadl_max; /* max index for which array has space */
PAD ** xpadl_alloc; /* pointer to beginning of array of AVs */
- U32 xpadl_id; /* Semi-unique ID, shared between clones */
- U32 xpadl_outid; /* ID of outer pad */
+ PADNAMELIST*xpadl_outid; /* Padnamelist of outer pad; used as ID */
};
Clear the pointed to pad value on scope exit. (i.e. the runtime action of 'my')
=for apidoc m|void|SAVECOMPPAD
-Save PL_comppad_name, PL_comppad and PL_curpad.
+save PL_comppad and PL_curpad
=for apidoc Amx|PAD **|PadlistARRAY|PADLIST padlist
#define PadnamelistARRAY(pnl) AvARRAY(pnl)
#define PadnamelistMAX(pnl) AvFILLp(pnl)
+#define PadnamelistMAXNAMED(pnl) \
+ ((XPVAV*) SvANY(pnl))->xmg_u.xmg_hash_index
#define PadARRAY(pad) AvARRAY(pad)
#define PadMAX(pad) AvFILLp(pad)
#define PadnamePV(pn) (SvPOKp(pn) ? SvPVX(pn) : NULL)
-#define PadnameLEN(pn) SvCUR(pn)
+#define PadnameLEN(pn) ((pn) == &PL_sv_undef ? 0 : SvCUR(pn))
#define PadnameUTF8(pn) !!SvUTF8(pn)
#define PadnameSV(pn) pn
#define PadnameIsOUR(pn) !!SvPAD_OUR(pn)
#define PAD_SET_CUR_NOSAVE(padlist,nth) \
- PL_comppad_name = PadlistNAMES(padlist); \
PL_comppad = (PAD*) (PadlistARRAY(padlist)[nth]); \
PL_curpad = AvARRAY(PL_comppad); \
DEBUG_Xv(PerlIO_printf(Perl_debug_log, \