X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=Upper.xs;h=f1a3e2491b8a13ff1dd59bc49ce625a695c3831e;hb=4229b39e5533bbe91f1c56d47401b8602ed62dbc;hp=e810d69b77603810c207334ee09fcb24e3cf1e6c;hpb=05e5544f3e55b668c38fe41c5a3749c2d02c8131;p=perl%2Fmodules%2FScope-Upper.git diff --git a/Upper.xs b/Upper.xs index e810d69..f1a3e24 100644 --- a/Upper.xs +++ b/Upper.xs @@ -900,24 +900,26 @@ static void su_localize(pTHX_ void *ud_) { if (SvTYPE(sv) >= SVt_PVGV) { gv = (GV *) sv; } else { - /* new perl context implementation frees savestack *before* restoring * PL_curcop. Temporarily restore it prematurely to make gv_fetch* * looks up unqualified var names in the caller's package */ #if SU_HAS_NEW_CXT COP *old_cop = PL_curcop; - PL_curcop = CX_CUR()->blk_oldcop; + PL_curcop = CX_CUR()->blk_oldcop; #endif #ifdef gv_fetchsv gv = gv_fetchsv(sv, GV_ADDMULTI, t); #else - STRLEN len; - const char *name = SvPV_const(sv, len); - gv = gv_fetchpvn_flags(name, len, GV_ADDMULTI, t); + { + STRLEN len; + const char *name = SvPV_const(sv, len); + gv = gv_fetchpvn_flags(name, len, GV_ADDMULTI, t); + } #endif + #if SU_HAS_NEW_CXT - CX_CUR()->blk_oldcop = PL_curcop; + CX_CUR()->blk_oldcop = old_cop; #endif } @@ -1087,7 +1089,6 @@ static void su_pop(pTHX_ void *ud); static void su_ss_push_destructor(pTHX_ void *ud, I32 depth, bool first) { su_ud_origin_elem *origin = SU_UD_ORIGIN(ud); - I32 pad; assert(first || origin[depth+1].orig_ix == PL_savestack_ix); su_ss_push_padding(aTHX_ ud, @@ -1164,7 +1165,7 @@ static void su_pop(pTHX_ void *ud) { static void su_init(pTHX_ void *ud, I32 cxix, I32 size) { #define su_init(U, C, S) su_init(aTHX_ (U), (C), (S)) - I32 i, depth, base; + I32 i, depth; su_ud_origin_elem *origin; I32 cur_cx_ix; I32 cur_scope_ix;