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