From: Jarkko Hietaniemi Date: Sat, 16 Dec 2006 11:48:13 +0000 (-0500) Subject: perl.c: leak avoidance X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=30985c42177cbe6a80b41e614f8691b272398f01;p=p5sagit%2Fp5-mst-13.2.git perl.c: leak avoidance Message-ID: <4584234D.7070209@iki.fi> p4raw-id: //depot/perl@29574 --- diff --git a/perl.c b/perl.c index 0f242d7..de3b277 100644 --- a/perl.c +++ b/perl.c @@ -792,19 +792,6 @@ perl_destruct(pTHXx) PL_exitlist = NULL; PL_exitlistlen = 0; - if (destruct_level == 0){ - - DEBUG_P(debprofdump()); - -#if defined(PERLIO_LAYERS) - /* No more IO - including error messages ! */ - PerlIO_cleanup(aTHX); -#endif - - /* The exit() function will do everything that needs doing. */ - return STATUS_EXIT; - } - /* jettison our possibly duplicated environment */ /* if PERL_USE_SAFE_PUTENV is defined environ will not have been copied * so we certainly shouldn't free it here @@ -831,6 +818,22 @@ perl_destruct(pTHXx) #endif #endif /* !PERL_MICRO */ + if (destruct_level == 0) { + + DEBUG_P(debprofdump()); + +#if defined(PERLIO_LAYERS) + /* No more IO - including error messages ! */ + PerlIO_cleanup(aTHX); +#endif + + CopFILE_free(&PL_compiling); + CopSTASH_free(&PL_compiling); + + /* The exit() function will do everything that needs doing. */ + return STATUS_EXIT; + } + /* reset so print() ends up where we expect */ setdefout(NULL);