stas        2002/08/20 21:46:44

  Modified:    xs/APR/PerlIO apr_perlio.c
  Log:
  - IoIFP(io) *must* be always set on the valid io sv, otherwise it'll be
  never closed and fh and memory leaked. as i saw from doio.c, the solution
  is to simply copy IoOFP.
  - add IoTYPE_WRONLY and IoTYPE_RDONLY flags to protect from wrong use
  
  Revision  Changes    Path
  1.22      +5 -1      modperl-2.0/xs/APR/PerlIO/apr_perlio.c
  
  Index: apr_perlio.c
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/xs/APR/PerlIO/apr_perlio.c,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- apr_perlio.c      21 Aug 2002 04:44:14 -0000      1.21
  +++ apr_perlio.c      21 Aug 2002 04:46:44 -0000      1.22
  @@ -478,11 +478,15 @@
   
       switch (type) {
         case APR_PERLIO_HOOK_WRITE:
  -        IoOFP(GvIOp(gv)) = pio;
  +          /* if IoIFP() is not assigned to it'll be never closed, see
  +           * Perl_io_close() */
  +        IoIFP(GvIOp(gv)) = IoOFP(GvIOp(gv)) = pio;
           IoFLAGS(GvIOp(gv)) |= IOf_FLUSH;
  +        IoTYPE(GvIOp(gv)) = IoTYPE_WRONLY;
           break;
         case APR_PERLIO_HOOK_READ:
           IoIFP(GvIOp(gv)) = pio;
  +        IoTYPE(GvIOp(gv)) = IoTYPE_RDONLY;
           break;
       };
   
  
  
  


Reply via email to