From: Jarkko Hietaniemi Date: Fri, 2 Nov 2007 21:38:48 +0000 (-0400) Subject: Re: building mod_perl-2.0.3 with Perl 5.10.0 (DEVEL32096) X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=77db880c5ac7a05cd8bbb0ffe765e93c9716c130;p=p5sagit%2Fp5-mst-13.2.git Re: building mod_perl-2.0.3 with Perl 5.10.0 (DEVEL32096) Message-Id: <472BD128.9080105@iki.fi> PerlIO_teardown is called when there may no longer be an interpreter available p4raw-id: //depot/perl@32215 --- diff --git a/perl.h b/perl.h index aab0393..e81d1af 100644 --- a/perl.h +++ b/perl.h @@ -3964,7 +3964,7 @@ typedef Sighandler_t Sigsave_t; #endif #ifdef USE_PERLIO -EXTERN_C void PerlIO_teardown(pTHX); +EXTERN_C void PerlIO_teardown(); # ifdef USE_ITHREADS # define PERLIO_INIT MUTEX_INIT(&PL_perlio_mutex) # define PERLIO_TERM \ diff --git a/perlio.c b/perlio.c index 2ea86aa..c0e7327 100644 --- a/perlio.c +++ b/perlio.c @@ -2413,7 +2413,7 @@ PerlIO_cleanup(pTHX) } } -void PerlIO_teardown(pTHX) /* Call only from PERL_SYS_TERM(). */ +void PerlIO_teardown() /* Call only from PERL_SYS_TERM(). */ { dVAR; #ifdef DEBUGGING @@ -2421,11 +2421,18 @@ void PerlIO_teardown(pTHX) /* Call only from PERL_SYS_TERM(). */ /* By now all filehandles should have been closed, so any * stray (non-STD-)filehandles indicate *possible* (PerlIO) * errors. */ +#define PERLIO_TEARDOWN_MESSAGE_BUF_SIZE 64 +#define PERLIO_TEARDOWN_MESSAGE_FD 2 + char buf[PERLIO_TEARDOWN_MESSAGE_BUF_SIZE]; int i; 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]); + if (PL_perlio_fd_refcnt[i]) { + const STRLEN len = + my_snprintf(buf, sizeof(buf), + "PerlIO_teardown: fd %d refcnt=%d\n", + i, PL_perlio_fd_refcnt[i]); + PerlLIO_write(PERLIO_TEARDOWN_MESSAGE_FD, buf, len); + } } } #endif diff --git a/perliol.h b/perliol.h index 0c57de1..756db2d 100644 --- a/perliol.h +++ b/perliol.h @@ -170,7 +170,7 @@ PERL_EXPORT_C void PerlIO_list_free(pTHX_ PerlIO_list_t *list); /* PerlIO_teardown doesn't need exporting, but the EXTERN_C is needed * for compiling as C++. Must also match with what perl.h says. */ -EXTERN_C void PerlIO_teardown(pTHX); +EXTERN_C void PerlIO_teardown(); /*--------------------------------------------------------------------------------------*/ /* Generic, or stub layer functions */