Author: richter
Date: Fri Aug  5 16:05:31 2011
New Revision: 1154283

URL: http://svn.apache.org/viewvc?rev=1154283&view=rev
Log:
Fix Output inside of Registry script for mod_perl 2.0.4+

Modified:
    perl/embperl/trunk/epdat2.h
    perl/embperl/trunk/epio.c

Modified: perl/embperl/trunk/epdat2.h
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/epdat2.h?rev=1154283&r1=1154282&r2=1154283&view=diff
==============================================================================
--- perl/embperl/trunk/epdat2.h (original)
+++ perl/embperl/trunk/epdat2.h Fri Aug  5 16:05:31 2011
@@ -262,6 +262,7 @@ typedef struct tComponentOutput
     int     nMarker ;               /*  Makers for rollback output */
 
     FILEIO *  ofd  ;                /* output file descriptor */
+    int              no_ofd_close ;        /* do not close output file handle, 
because it's ownd by perl */
 
     SV *    ofdobj ;               /* perl object that is tied to stdout, if 
any */
     } tComponentOutput ;

Modified: perl/embperl/trunk/epio.c
URL: 
http://svn.apache.org/viewvc/perl/embperl/trunk/epio.c?rev=1154283&r1=1154282&r2=1154283&view=diff
==============================================================================
--- perl/embperl/trunk/epio.c (original)
+++ perl/embperl/trunk/epio.c Fri Aug  5 16:05:31 2011
@@ -69,6 +69,7 @@
 #endif
 
 #define HANDLE_GV(name) gv_fetchpv(name, TRUE, SVt_PVIO)
+//#define HANDLE_GV(name) gv_fetchpv(name, GV_ADD, SVt_PVIO)
 
 
 
@@ -698,10 +699,11 @@ int OpenOutput (/*i/o*/ register req * r
 
 
     
-    if (r -> Component.pOutput -> ofd && r -> Component.pOutput -> ofd != 
PerlIO_stdoutF)
+    if (r -> Component.pOutput -> ofd && r -> Component.pOutput -> ofd != 
PerlIO_stdoutF && !r -> Component.pOutput -> no_ofd_close)
         PerlIO_close (r -> Component.pOutput -> ofd) ;
 
     r -> Component.pOutput -> ofd = NULL ;
+    r -> Component.pOutput -> no_ofd_close = 0 ;
 
     if (sFilename == NULL || *sFilename == '\0')
         {
@@ -729,6 +731,13 @@ int OpenOutput (/*i/o*/ register req * r
                    }
                return ok ;
                }
+
+            r -> Component.pOutput -> ofd = IoOFP(GvIOn(handle)) ;
+            if (r -> Component.pOutput -> ofd)
+                {
+                r -> Component.pOutput -> no_ofd_close = 1 ;
+                return ok ;
+                }
             }
         
        r -> Component.pOutput -> ofd = PerlIO_stdoutF ;
@@ -796,7 +805,7 @@ int CloseOutput (/*in*/ tReq *          
        }
 #endif
 
-    if (pOutput -> ofd && pOutput -> ofd != PerlIO_stdoutF)
+    if (pOutput -> ofd && pOutput -> ofd != PerlIO_stdoutF && !pOutput -> 
no_ofd_close)
         PerlIO_close (pOutput -> ofd) ;
 
     pOutput -> ofd = NULL ;



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to