dougm 02/01/06 13:56:22 Modified: src/modules/perl modperl_io.c Log: always call modperl_io_handle_untie() in modperl_io_handle_tie() fixes a segv in modules/cgi test #1 Revision Changes Path 1.5 +14 -7 modperl-2.0/src/modules/perl/modperl_io.c Index: modperl_io.c =================================================================== RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_io.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- modperl_io.c 13 Sep 2001 04:10:55 -0000 1.4 +++ modperl_io.c 6 Jan 2002 21:56:22 -0000 1.5 @@ -15,12 +15,21 @@ */ MP_INLINE void modperl_io_handle_untie(pTHX_ GV *handle) { +#ifdef MP_TRACE + if (mg_find((SV*)handle, 'q') || + mg_find((SV*)GvIOp(handle), 'q')) + { + MP_TRACE_g(MP_FUNC, "untie *%s(0x%lx), REFCNT=%d\n", + GvNAME(handle), (unsigned long)handle, + SvREFCNT((SV*)handle)); + } + else { + return; + } +#endif + sv_unmagic((SV*)handle, 'q'); sv_unmagic((SV*)GvIOp(handle), 'q'); - - MP_TRACE_g(MP_FUNC, "untie *%s(0x%lx), REFCNT=%d\n", - GvNAME(handle), (unsigned long)handle, - SvREFCNT((SV*)handle)); } MP_INLINE void modperl_io_handle_tie(pTHX_ GV *handle, @@ -28,9 +37,7 @@ { SV *obj = modperl_ptr2obj(aTHX_ classname, ptr); - if (mg_find((SV*)handle, 'q')) { - modperl_io_handle_untie(aTHX_ handle); - } + modperl_io_handle_untie(aTHX_ handle); sv_magic((SV*)handle, obj, 'q', Nullch, 0); sv_magic((SV*)GvIOp(handle), obj, 'q', Nullch, 0);