From: Gurusamy Sarathy Date: Mon, 8 Nov 1999 04:17:28 +0000 (+0000) Subject: tweak change#4502 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=7a1c55545340734b4c7e5b94b34d2b199bf3e739;p=p5sagit%2Fp5-mst-13.2.git tweak change#4502 p4raw-link: @4502 on //depot/perl: 18708f5a7334d978ddf7562cb7f58e28bec6e4ed p4raw-id: //depot/perl@4535 --- diff --git a/doio.c b/doio.c index b340ec6..16cff29 100644 --- a/doio.c +++ b/doio.c @@ -490,8 +490,11 @@ Perl_nextargv(pTHX_ register GV *gv) PL_argvoutgv = gv_fetchpv("ARGVOUT",TRUE,SVt_PVIO); if (io && (IoFLAGS(io) & IOf_ARGV) && (IoFLAGS(io) & IOf_START)) { IoFLAGS(io) &= ~IOf_START; - if (PL_inplace) + if (PL_inplace) { + if (!PL_argvout_stack) + PL_argvout_stack = newAV(); av_push(PL_argvout_stack, SvREFCNT_inc(PL_defoutgv)); + } } if (PL_filemode & (S_ISUID|S_ISGID)) { PerlIO_flush(IoIFP(GvIOn(PL_argvoutgv))); /* chmod must follow last write */ @@ -668,7 +671,9 @@ Perl_nextargv(pTHX_ register GV *gv) IoFLAGS(io) |= IOf_START; if (PL_inplace) { (void)do_close(PL_argvoutgv,FALSE); - if (io && (IoFLAGS(io) & IOf_ARGV) && AvFILLp(PL_argvout_stack) >= 0) { + if (io && (IoFLAGS(io) & IOf_ARGV) + && PL_argvout_stack && AvFILLp(PL_argvout_stack) >= 0) + { GV *oldout = (GV*)av_pop(PL_argvout_stack); setdefout(oldout); SvREFCNT_dec(oldout); diff --git a/perl.c b/perl.c index 6e907eb..929fef1 100644 --- a/perl.c +++ b/perl.c @@ -454,6 +454,8 @@ perl_destruct(pTHXx) /* reset so print() ends up where we expect */ setdefout(Nullgv); + SvREFCNT_dec(PL_argvout_stack); + PL_argvout_stack = Nullav; /* Prepare to destruct main symbol table. */ @@ -2771,7 +2773,6 @@ S_init_postdump_symbols(pTHX_ register int argc, register char **argv, register for (; argc > 0; argc--,argv++) { av_push(GvAVn(PL_argvgv),newSVpv(argv[0],0)); } - PL_argvout_stack = newAV(); } if (PL_envgv = gv_fetchpv("ENV",TRUE, SVt_PVHV)) { HV *hv;