From 2c05e328191edda79c00062be53a6cd9c8f0be70 Mon Sep 17 00:00:00 2001 From: Chip Salzenberg Date: Tue, 31 Dec 1996 09:33:01 +1200 Subject: [PATCH] Hide lexicals from Cd or Cd module (!) --- pp_ctl.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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); -- 2.7.4