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