- Fixed weired behavior in CGI parameter parsing. (Dmitry, Hannes Magnusson)
- Fixed bug #43533 (escapeshellarg('') returns null). (Ilia)
+- Fixed bug #43522 (stream_get_line() eats additional characters). (Felipe,
+ Ilia)
- Fixed bug #43495 (array_merge_recursive() crashes with recursive arrays).
(Ilia)
- Fixed bug #43493 (pdo_pgsql does not send username on connect when password
--- /dev/null
+--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
toread = maxlen;
} else {
if (delim_len == 1) {
- e = memchr(stream->readbuf + stream->readpos, *delim, stream->writepos - stream->readpos);
+ e = memchr(stream->readbuf + stream->readpos, *delim, maxlen);
} else {
- e = php_memnstr(stream->readbuf + stream->readpos, delim, delim_len, (stream->readbuf + stream->writepos));
+ e = php_memnstr(stream->readbuf + stream->readpos, delim, delim_len, (stream->readbuf + stream->readpos + maxlen));
}
if (!e) {