diff options
author | Yves Orton <demerphq@gmail.com> | 2006-12-02 15:48:54 +0100 |
---|---|---|
committer | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2006-12-03 19:16:17 +0000 |
commit | 432ce8742246acadf2cbd18b5d853ae8e4a260e3 (patch) | |
tree | 1456bab6cb9bc249bee216e051eaa6cdba22f9aa | |
parent | 304ee84bde82d4eee33b0d0ff03080b360eae72b (diff) | |
download | perl-432ce8742246acadf2cbd18b5d853ae8e4a260e3.tar.gz |
Re: [PATCH] Re: [PATCH] Re: [PATCH] abstract mempool header testing
Message-ID: <9b18b3110612020548l7c5aefd4m19cb0b5c4395abb4@mail.gmail.com>
p4raw-id: //depot/perl@29442
-rw-r--r-- | perlio.c | 17 | ||||
-rw-r--r-- | win32/perllib.c | 16 |
2 files changed, 18 insertions, 15 deletions
@@ -2398,6 +2398,7 @@ PerlIO_cleanup(pTHX) void PerlIO_teardown(pTHX) /* Call only from PERL_SYS_TERM(). */ { + #ifdef DEBUGGING { /* By now all filehandles should have been closed, so any @@ -2416,22 +2417,14 @@ void PerlIO_teardown(pTHX) /* Call only from PERL_SYS_TERM(). */ #endif if (PL_perlio_fd_refcnt_size /* Assuming initial size of zero. */ && PL_perlio_fd_refcnt) { -#ifdef PERL_TRACK_MEMPOOL - Malloc_t ptr = (Malloc_t)((char*)PL_perlio_fd_refcnt-sTHX); - struct perl_memory_debug_header *const header - = (struct perl_memory_debug_header *)ptr; - /* Only the thread that allocated us can free us. */ - if (header->interpreter == aTHX) -#endif - { - PerlMemShared_free(PL_perlio_fd_refcnt); /* Not Safefree() because was allocated with PerlMemShared_realloc(). */ - PL_perlio_fd_refcnt = NULL; - PL_perlio_fd_refcnt_size = 0; - } + PerlMemShared_free(PL_perlio_fd_refcnt); /* Not Safefree() because was allocated with PerlMemShared_realloc(). */ + PL_perlio_fd_refcnt = NULL; + PL_perlio_fd_refcnt_size = 0; } #ifdef USE_ITHREADS MUTEX_UNLOCK(&PL_perlio_mutex); #endif + } diff --git a/win32/perllib.c b/win32/perllib.c index 1e4ba09001..d1afa163c8 100644 --- a/win32/perllib.c +++ b/win32/perllib.c @@ -248,18 +248,28 @@ RunPerl(int argc, char **argv, char **env) exitstatus = perl_run(my_perl); #endif } - + perl_destruct(my_perl); - perl_free(my_perl); #ifdef USE_ITHREADS if (new_perl) { PERL_SET_THX(new_perl); perl_destruct(new_perl); + PERL_SET_THX(my_perl); + } +#endif + + PERL_SYS_TERM(); + + perl_free(my_perl); + +#ifdef USE_ITHREADS + if (new_perl) { + PERL_SET_THX(new_perl); perl_free(new_perl); } #endif - PERL_SYS_TERM(); + return (exitstatus); } |