summaryrefslogtreecommitdiff
path: root/perl.c
diff options
context:
space:
mode:
authorRafael Garcia-Suarez <rgarciasuarez@gmail.com>2002-08-28 01:36:53 +0200
committerhv <hv@crypt.org>2002-08-29 13:29:43 +0000
commitece599bdb7307c953714bad8b5a320ffa2cd0857 (patch)
tree167557343fc2599ff027bce8ea9b1b8d58765a2d /perl.c
parent444379fb158f55ef6465d6e50c03864ed09002d4 (diff)
downloadperl-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.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/perl.c b/perl.c
index 5aae0c88c7..393ad4f75b 100644
--- a/perl.c
+++ b/perl.c
@@ -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);
}