From: Jarkko Hietaniemi Date: Wed, 18 Oct 2006 20:07:54 +0000 (-0400) Subject: blead valgrind finding X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=e47547a83f24974bde05453531e68d7dd8c5ec87;p=p5sagit%2Fp5-mst-13.2.git blead valgrind finding Message-ID: <4536C1DA.4060600@iki.fi> p4raw-id: //depot/perl@29045 --- diff --git a/perlio.c b/perlio.c index ddc0ad8..63164c4 100644 --- a/perlio.c +++ b/perlio.c @@ -2367,6 +2367,20 @@ PerlIO_cleanup(pTHX) #else PerlIO_debug("Cleanup layers\n"); #endif + +#ifdef DEBUGGING + { + /* By now all filehandles should have been closed, so any + * stray (non-STD-)filehandles indicate *possible* (PerlIO) + * errors. */ + for (i = 3; i < PL_perlio_fd_refcnt_size; i++) { + if (PL_perlio_fd_refcnt[i]) + PerlIO_debug("PerlIO_cleanup: fd %d refcnt=%d\n", + i, PL_perlio_fd_refcnt[i]); + } + } +#endif + /* Raise STDIN..STDERR refcount so we don't close them */ for (i=0; i < 3; i++) PerlIOUnix_refcnt_inc(i); @@ -2383,6 +2397,15 @@ PerlIO_cleanup(pTHX) PerlIO_list_free(aTHX_ PL_def_layerlist); PL_def_layerlist = NULL; } + +#ifdef USE_ITHREADS + /* only main thread can free refcnt table */ + if (PL_curinterp == aTHX) +#endif + { + Safefree(PL_perlio_fd_refcnt); + PL_perlio_fd_refcnt = NULL; + } }