diff options
-rw-r--r-- | ext/standard/streamsfuncs.c | 2 | ||||
-rw-r--r-- | ext/standard/tests/streams/bug46426.phpt | 22 |
2 files changed, 23 insertions, 1 deletions
diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c index c3da25259e..505469c7dd 100644 --- a/ext/standard/streamsfuncs.c +++ b/ext/standard/streamsfuncs.c @@ -411,7 +411,7 @@ PHP_FUNCTION(stream_get_contents) php_stream_from_zval(stream, &zsrc); - if (pos > 0 && php_stream_seek(stream, pos, SEEK_SET) < 0) { + if (pos >= 0 && php_stream_seek(stream, pos, SEEK_SET) < 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to seek to position %ld in the stream", pos); RETURN_FALSE; } diff --git a/ext/standard/tests/streams/bug46426.phpt b/ext/standard/tests/streams/bug46426.phpt new file mode 100644 index 0000000000..05bc9c1e3c --- /dev/null +++ b/ext/standard/tests/streams/bug46426.phpt @@ -0,0 +1,22 @@ +--TEST-- +Bug #46426 (3rd parameter offset of stream_get_contents not works for "0") +--FILE-- +<?php + +$tmp = tmpfile(); + +fwrite($tmp, "12345"); + +echo stream_get_contents($tmp, -1, 0); +echo "\n"; +echo stream_get_contents($tmp, -1, 1); +echo "\n"; +echo stream_get_contents($tmp, -1, 2); + +@unlink($tmp); + +?> +--EXPECT-- +12345 +2345 +345 |