iliaa           Mon Dec 10 14:19:20 2007 UTC

  Modified files:              
    /php-src/main/streams       streams.c 
    /php-src/ext/standard/tests/file    bug43522.phpt 
  Log:
  
  MFB: Fixed bug #43522 (stream_get_line() eats additional characters)
  
http://cvs.php.net/viewvc.cgi/php-src/main/streams/streams.c?r1=1.154&r2=1.155&diff_format=u
Index: php-src/main/streams/streams.c
diff -u php-src/main/streams/streams.c:1.154 
php-src/main/streams/streams.c:1.155
--- php-src/main/streams/streams.c:1.154        Tue Nov  6 10:54:29 2007
+++ php-src/main/streams/streams.c      Mon Dec 10 14:19:20 2007
@@ -19,7 +19,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: streams.c,v 1.154 2007/11/06 10:54:29 helly Exp $ */
+/* $Id: streams.c,v 1.155 2007/12/10 14:19:20 iliaa Exp $ */
 
 #define _GNU_SOURCE
 #include "php.h"
@@ -1105,9 +1105,9 @@
                toread = maxlen;
        } else {
                if (delim_len == 1) {
-                       e = memchr(stream->readbuf.s + stream->readpos, *delim, 
stream->writepos - stream->readpos);
+                       e = memchr(stream->readbuf.s + stream->readpos, *delim, 
maxlen);
                } else {
-                       e = php_memnstr(stream->readbuf.s + stream->readpos, 
delim, delim_len, (stream->readbuf.s + stream->writepos));
+                       e = php_memnstr(stream->readbuf.s + stream->readpos, 
delim, delim_len, (stream->readbuf.s + stream->readpos + maxlen));
                }
 
                if (!e) {
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/file/bug43522.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/standard/tests/file/bug43522.phpt
diff -u /dev/null php-src/ext/standard/tests/file/bug43522.phpt:1.2
--- /dev/null   Mon Dec 10 14:19:20 2007
+++ php-src/ext/standard/tests/file/bug43522.phpt       Mon Dec 10 14:19:20 2007
@@ -0,0 +1,25 @@
+--TEST--
+Bug #43522 (stream_get_line() eats additional characters)
+--FILE--
+<?php // 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ
+
+$fp = fopen(__FILE__, 'r'); // Open self
+
+DoTest($fp, 'ZZZ');  // test multi-char delimiter
+DoTest($fp, "Z");  // test single-char delimiter
+
+function DoTest($fp, $delim) {
+       echo "Delimiter:  " . $delim . "\n";
+       rewind($fp);
+       echo "\t" . stream_get_line($fp, 10, $delim) . "\n";
+       echo "\t" . stream_get_line($fp, 10, $delim) . "\n";
+}
+
+?>
+--EXPECT--
+Delimiter:  ZZZ
+       <?php // 1
+       234567890A
+Delimiter:  Z
+       <?php // 1
+       234567890A

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

Reply via email to