IO:: PRINT returns a bool, not no of bytes written, pointed out by chansen
Tomas Doran (t0m) [Mon, 11 Jan 2010 17:33:20 +0000 (17:33 +0000)]
perl/ChangeLog
perl/FCGI.PL
perl/FCGI.XL

index af1ca13..6042c1c 100644 (file)
@@ -1,3 +1,6 @@
+    o Make the PRINT method return a boolean value rather than the
+         number of bytes written, previous patch was incorrect.
+
 Version 0.68_01 --   10 Jan 2010  <mst@shadowcat.co.uk> Matt S Trout
     o Force signal handler installation so that we correctly install handlers
       for SIGPIPE. Fixes RT#5100 <bobtfish@bobtfish.net>
index 4781e86..a221c74 100644 (file)
@@ -261,13 +261,10 @@ sub READ {
 
 sub PRINT {
     my ($stream) = shift;
-    my $bytes = 0;
     for (@_) {
-        my $len = length($_);
-        $stream->{src}->write($stream->{type}, $_, $len);
-        $bytes += $len;
+        $stream->{src}->write($stream->{type}, $_, length($_));
     }
-    return $bytes;
+    return 1;
 }
 
 sub CLOSE {
index 65a2767..a7d0213 100644 (file)
@@ -539,13 +539,9 @@ PRINT(stream, ...)
 
        PREINIT:
        int     n;
-    int retval;
-    int bytes_written;
 
        CODE:
-    retval = 0;
-    bytes_written = 0;
-    for (n = 1; n < items && bytes_written >= 0; ++n) {
+    for (n = 1; n < items; ++n) {
             STRLEN len;
             register char *tmps; 
 #ifdef DO_UTF8
@@ -553,14 +549,11 @@ PRINT(stream, ...)
                 croak("Wide character in FCGI::Stream::PRINT");
 #endif
             tmps = (char *)SvPV(ST(n),len);
-               bytes_written = FCGX_PutStr(tmps, len, stream);
-            if (bytes_written > 0) {
-                retval += bytes_written;
-            }
+               FCGX_PutStr(tmps, len, stream);
     }
        if (SvTRUEx(perl_get_sv("|", FALSE))) 
            FCGX_FFlush(stream);
-    RETVAL = retval;
+    RETVAL = 1;
 
     OUTPUT:
     RETVAL