diff options
author | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2002-08-28 01:36:53 +0200 |
---|---|---|
committer | hv <hv@crypt.org> | 2002-08-29 13:29:43 +0000 |
commit | ece599bdb7307c953714bad8b5a320ffa2cd0857 (patch) | |
tree | 167557343fc2599ff027bce8ea9b1b8d58765a2d /perl.c | |
parent | 444379fb158f55ef6465d6e50c03864ed09002d4 (diff) | |
download | perl-ece599bdb7307c953714bad8b5a320ffa2cd0857.tar.gz |
B::check_av() ; B::Deparse for CHECK blocks
Message-Id: <20020827233653.535bc211.rgarciasuarez@free.fr>
p4raw-id: //depot/perl@17804
Diffstat (limited to 'perl.c')
-rw-r--r-- | perl.c | 18 |
1 files changed, 14 insertions, 4 deletions
@@ -628,11 +628,13 @@ perl_destruct(pTHXx) SvREFCNT_dec(PL_beginav_save); SvREFCNT_dec(PL_endav); SvREFCNT_dec(PL_checkav); + SvREFCNT_dec(PL_checkav_save); SvREFCNT_dec(PL_initav); PL_beginav = Nullav; PL_beginav_save = Nullav; PL_endav = Nullav; PL_checkav = Nullav; + PL_checkav_save = Nullav; PL_initav = Nullav; /* shortcuts just get cleared */ @@ -4007,11 +4009,19 @@ Perl_call_list(pTHX_ I32 oldscope, AV *paramList) while (AvFILL(paramList) >= 0) { cv = (CV*)av_shift(paramList); - if (PL_savebegin && (paramList == PL_beginav)) { + if (PL_savebegin) { + if (paramList == PL_beginav) { /* save PL_beginav for compiler */ - if (! PL_beginav_save) - PL_beginav_save = newAV(); - av_push(PL_beginav_save, (SV*)cv); + if (! PL_beginav_save) + PL_beginav_save = newAV(); + av_push(PL_beginav_save, (SV*)cv); + } + else if (paramList == PL_checkav) { + /* save PL_checkav for compiler */ + if (! PL_checkav_save) + PL_checkav_save = newAV(); + av_push(PL_checkav_save, (SV*)cv); + } } else { SAVEFREESV(cv); } |