X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pad.h;h=8602eda7f78395854425dbfecb2d6f20dfbeff57;hb=01146bad274273e459645fb4cce5aeac95999d64;hp=2f0fb7c7d11322f59e810dfd0ebf8b7e0272d651;hpb=b1bc3f345d4dfe19cd94c120c46649336b5cb92b;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pad.h b/pad.h index 2f0fb7c..8602eda 100644 --- a/pad.h +++ b/pad.h @@ -112,6 +112,16 @@ typedef enum { padtidy_FORMAT /* or a format */ } padtidy_type; +#ifdef PERL_CORE + +/* flags for pad_add_name. SVf_UTF8 will also be valid in the future. */ + +# define padadd_OUR 0x01 /* our declaration. */ +# define padadd_STATE 0x02 /* state declaration. */ +# define padadd_NO_DUP_CHECK 0x04 /* skip warning on dups. */ + +#endif + /* ASSERT_CURPAD_LEGAL and ASSERT_CURPAD_ACTIVE respectively determine * whether PL_comppad and PL_curpad are consistent and whether they have * active values */ @@ -210,7 +220,7 @@ Restore the old pad saved into the local variable opad by PAD_SAVE_LOCAL() #define PAD_BASE_SV(padlist, po) \ (AvARRAY(padlist)[1]) \ - ? AvARRAY((AV*)(AvARRAY(padlist)[1]))[po] : NULL; + ? AvARRAY(MUTABLE_AV((AvARRAY(padlist)[1])))[po] : NULL; #define PAD_SET_CUR_NOSAVE(padlist,nth) \ @@ -239,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; \ + 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", \ @@ -258,7 +269,7 @@ context block structure (can be used as an lvalue). */ #define CX_CURPAD_SAVE(block) (block).oldcomppad = PL_comppad -#define CX_CURPAD_SV(block,po) (AvARRAY((AV*)((block).oldcomppad))[po]) +#define CX_CURPAD_SV(block,po) (AvARRAY(MUTABLE_AV(((block).oldcomppad)))[po]) /* @@ -337,7 +348,7 @@ Clone the state variables associated with running and compiling pads. * sub's CV or padlist. */ #define PAD_CLONE_VARS(proto_perl, param) \ - PL_comppad = (AV *) ptr_table_fetch(PL_ptr_table, proto_perl->Icomppad); \ + PL_comppad = MUTABLE_AV(ptr_table_fetch(PL_ptr_table, proto_perl->Icomppad)); \ PL_curpad = PL_comppad ? AvARRAY(PL_comppad) : NULL; \ PL_comppad_name = av_dup(proto_perl->Icomppad_name, param); \ PL_comppad_name_fill = proto_perl->Icomppad_name_fill; \