From: Chip Salzenberg Date: Mon, 30 Dec 1996 21:33:01 +0000 (+1200) Subject: Hide lexicals from Cd or Cd module (!) X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=2c05e328191edda79c00062be53a6cd9c8f0be70;p=p5sagit%2Fp5-mst-13.2.git Hide lexicals from Cd or Cd module (!) --- diff --git a/pp_ctl.c b/pp_ctl.c index 1350de4..94b4052 100644 --- a/pp_ctl.c +++ b/pp_ctl.c @@ -1590,6 +1590,7 @@ PP(pp_goto) EXTEND(stack_sp, items); /* @_ could have been extended. */ Copy(AvARRAY(av), stack_sp, items, SV*); stack_sp += items; + SvREFCNT_dec(GvAV(defgv)); GvAV(defgv) = cx->blk_sub.savearray; AvREAL_off(av); av_clear(av); @@ -1682,7 +1683,7 @@ PP(pp_goto) cx->blk_sub.savearray = GvAV(defgv); cx->blk_sub.argarray = av; - GvAV(defgv) = cx->blk_sub.argarray; + GvAV(defgv) = (AV*)SvREFCNT_inc(av); ++mark; if (items >= AvMAX(av) + 1) { @@ -1941,7 +1942,9 @@ int gimme; av_store(comppadlist, 0, (SV*)comppad_name); av_store(comppadlist, 1, (SV*)comppad); CvPADLIST(compcv) = comppadlist; - CvOUTSIDE(compcv) = (CV*)SvREFCNT_inc(caller); + + if (saveop->op_type != OP_REQUIRE) + CvOUTSIDE(compcv) = (CV*)SvREFCNT_inc(caller); SAVEFREESV(compcv);