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);
  
  
  


Reply via email to