summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/standard/streamsfuncs.c2
-rw-r--r--ext/standard/tests/streams/bug46426.phpt22
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