X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=Upper.xs;h=702481594747b6e41c6753b5f9304e1fecae3cf7;hb=089138101b5dada28467146e2d948ba041bf97d7;hp=7cbbaa2da3fe315efbbdf62c4cbd1e30265272b2;hpb=52f4d61f228f6e76a229b389c897932d2b5c3e62;p=perl%2Fmodules%2FScope-Upper.git diff --git a/Upper.xs b/Upper.xs index 7cbbaa2..7024815 100644 --- a/Upper.xs +++ b/Upper.xs @@ -1001,9 +1001,26 @@ static void su_pop(pTHX_ void *ud) { ud, 24, ' ', mark, base)); if (base < mark) { +#if SU_HAS_PERL(5, 19, 4) + I32 save = -1; + PERL_CONTEXT *cx; +#endif + SU_D(PerlIO_printf(Perl_debug_log, "%p: clear leftovers\n", ud)); + +#if SU_HAS_PERL(5, 19, 4) + cx = cxstack + cxstack_ix; + if (CxTYPE(cx) == CXt_SUB) + save = PL_scopestack[cx->blk_oldscopesp - 1]; +#endif + PL_savestack_ix = mark; leave_scope(base); + +#if SU_HAS_PERL(5, 19, 4) + if (CxTYPE(cx) == CXt_SUB) + PL_scopestack[cx->blk_oldscopesp - 1] = save; +#endif } PL_savestack_ix = base;