tony2001                Thu Jul 13 12:00:17 2006 UTC

  Added files:                 (Branch: PHP_5_2)
    /php-src/ext/standard/tests/file    bug38086.phpt bug38086.txt 
                                        stream_copy_to_stream.phpt 

  Modified files:              
    /php-src    NEWS 
    /php-src/main/streams       streams.c 
  Log:
  MFH: fix #38086 (stream_copy_to_stream() returns 0 when maxlen is bigger than 
the actual length)
  add tests
  
  
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.119&r2=1.2027.2.547.2.120&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.119 php-src/NEWS:1.2027.2.547.2.120
--- php-src/NEWS:1.2027.2.547.2.119     Wed Jul 12 09:51:47 2006
+++ php-src/NEWS        Thu Jul 13 12:00:16 2006
@@ -82,6 +82,8 @@
 
 - Fixed memory leaks in openssl streams context options. (Pierre)
 - Fixed handling of extremely long paths inside tempnam() function. (Ilia)
+- Fixed bug #38086 (stream_copy_to_stream() returns 0 when maxlen is bigger 
+  than the actual length). (Tony)
 - Fixed bug #38072 (boolean arg for mysqli_autocommit() is always true on 
   Solaris). (Tony)
 - Fixed bug #38067 (Parameters are not decoded from utf-8 when using encoding
http://cvs.php.net/viewvc.cgi/php-src/main/streams/streams.c?r1=1.82.2.6.2.3&r2=1.82.2.6.2.4&diff_format=u
Index: php-src/main/streams/streams.c
diff -u php-src/main/streams/streams.c:1.82.2.6.2.3 
php-src/main/streams/streams.c:1.82.2.6.2.4
--- php-src/main/streams/streams.c:1.82.2.6.2.3 Tue Jun 20 18:09:50 2006
+++ php-src/main/streams/streams.c      Thu Jul 13 12:00:17 2006
@@ -19,7 +19,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: streams.c,v 1.82.2.6.2.3 2006/06/20 18:09:50 bjori Exp $ */
+/* $Id: streams.c,v 1.82.2.6.2.4 2006/07/13 12:00:17 tony2001 Exp $ */
 
 #define _GNU_SOURCE
 #include "php.h"
@@ -1348,11 +1348,7 @@
                                writeptr += didwrite;
                        }
                } else {
-                       if (maxlen == 0) {
-                               return haveread;
-                       } else {
-                               return 0; /* error */
-                       }
+                       return haveread;
                }
 
                if (maxlen - haveread == 0) {

http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/file/bug38086.phpt?view=markup&rev=1.1
Index: php-src/ext/standard/tests/file/bug38086.phpt
+++ php-src/ext/standard/tests/file/bug38086.phpt
--TEST--
Bug #38086 (stream_copy_to_stream() returns 0 when maxlen is bigger than the 
actual length)
--FILE--
<?php

$initial_file = dirname(__FILE__).'/bug38086.txt';
$new_file = dirname(__FILE__).'/bug38086_1.txt';

$src = fopen($initial_file, 'r');
stream_filter_append($src, "string.rot13", STREAM_FILTER_READ);

$dest = fopen($new_file, 'w');
var_dump(stream_copy_to_stream($src, $dest));
fclose($src); fclose($dest);

var_dump(file_get_contents($new_file));
unlink($new_file);

$src = fopen($initial_file, 'r');
stream_filter_append($src, "string.rot13", STREAM_FILTER_READ);

$dest = fopen($new_file, 'w');
var_dump(stream_copy_to_stream($src, $dest, 10000));
fclose($src); fclose($dest);

var_dump(file_get_contents($new_file));
unlink($new_file);

echo "Done\n";
?>
--EXPECTF--     
int(134)
string(134) "Nabgure qnl
Jura gur cnvaf bs yvsr jba'g one zl jnl
V'yy oernx gurfr punvaf
Gung ubyq zr qbja
V'yy grne lbh qbja vagb zl cevingr uryy
"
int(134)
string(134) "Nabgure qnl
Jura gur cnvaf bs yvsr jba'g one zl jnl
V'yy oernx gurfr punvaf
Gung ubyq zr qbja
V'yy grne lbh qbja vagb zl cevingr uryy
"
Done

http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/file/bug38086.txt?view=markup&rev=1.1
Index: php-src/ext/standard/tests/file/bug38086.txt
+++ php-src/ext/standard/tests/file/bug38086.txt
Another day
When the pains of life won't bar my way
I'll break these chains
That hold me down
I'll tear you down into my private hell

http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/file/stream_copy_to_stream.phpt?view=markup&rev=1.1
Index: php-src/ext/standard/tests/file/stream_copy_to_stream.phpt
+++ php-src/ext/standard/tests/file/stream_copy_to_stream.phpt
--TEST--
stream_copy_to_stream() tests
--FILE--
<?php

$initial_file = dirname(__FILE__).'/bug38086.txt';
$new_file = dirname(__FILE__).'/bug38086_1.txt';

$src = fopen($initial_file, 'r');
stream_filter_append($src, "string.rot13", STREAM_FILTER_READ);

$dest = fopen($new_file, 'w');
var_dump(stream_copy_to_stream($src, $dest, 0));
fclose($src); fclose($dest);

var_dump(file_get_contents($new_file));
unlink($new_file);

/* --- */

$src = fopen($initial_file, 'r');
stream_filter_append($src, "string.rot13", STREAM_FILTER_READ);

$dest = fopen($new_file, 'w');
var_dump(stream_copy_to_stream($src, $dest, -1));
fclose($src); fclose($dest);

var_dump(file_get_contents($new_file));
unlink($new_file);

/* --- */

$src = fopen($initial_file, 'r');
stream_filter_append($src, "string.rot13", STREAM_FILTER_READ);

$dest = fopen($new_file, 'w');
var_dump(stream_copy_to_stream($src, $dest));
fclose($src); fclose($dest);

var_dump(file_get_contents($new_file));
unlink($new_file);

/* --- */

$src = fopen($initial_file, 'r');

$dest = fopen($new_file, 'w');
var_dump(stream_copy_to_stream($src, $dest));
fclose($src); fclose($dest);

var_dump(file_get_contents($new_file));
unlink($new_file);

/* --- */

$src = fopen($initial_file, 'r');

$dest = fopen($new_file, 'w');
var_dump(stream_copy_to_stream($src, $dest, 1000000));
fclose($src); fclose($dest);

var_dump(file_get_contents($new_file));
unlink($new_file);

/* --- */

$src = fopen($initial_file, 'r');

$dest = fopen($new_file, 'w');
var_dump(stream_copy_to_stream($src, $dest, 10));
fclose($src); fclose($dest);

var_dump(file_get_contents($new_file));
unlink($new_file);

/* --- */

$src = fopen($initial_file, 'r');

$dest = fopen($new_file, 'w');
var_dump(stream_copy_to_stream($src, $dest, -1));
fclose($src); fclose($dest);

var_dump(file_get_contents($new_file));
unlink($new_file);

echo "Done\n";
?>
--EXPECTF--     
int(0)
string(0) ""
int(134)
string(134) "Nabgure qnl
Jura gur cnvaf bs yvsr jba'g one zl jnl
V'yy oernx gurfr punvaf
Gung ubyq zr qbja
V'yy grne lbh qbja vagb zl cevingr uryy
"
int(134)
string(134) "Nabgure qnl
Jura gur cnvaf bs yvsr jba'g one zl jnl
V'yy oernx gurfr punvaf
Gung ubyq zr qbja
V'yy grne lbh qbja vagb zl cevingr uryy
"
int(134)
string(134) "Another day
When the pains of life won't bar my way
I'll break these chains
That hold me down
I'll tear you down into my private hell
"
int(134)
string(134) "Another day
When the pains of life won't bar my way
I'll break these chains
That hold me down
I'll tear you down into my private hell
"
int(10)
string(10) "Another da"
int(134)
string(134) "Another day
When the pains of life won't bar my way
I'll break these chains
That hold me down
I'll tear you down into my private hell
"
Done

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to