summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Pena <felipe@php.net>2008-10-30 14:34:25 +0000
committerFelipe Pena <felipe@php.net>2008-10-30 14:34:25 +0000
commit1eb552a7128a85cbed43f72b61ea74d021fece68 (patch)
tree03211706c76f95d6aa07c40f4dcb87fd3bcef898
parentb51214fce724ee62436311e4343e04ed4f3202b6 (diff)
downloadphp-git-1eb552a7128a85cbed43f72b61ea74d021fece68.tar.gz
- Fix the fix
- Improved test
-rw-r--r--ext/standard/streamsfuncs.c2
-rw-r--r--ext/standard/tests/streams/bug46426.phpt18
2 files changed, 16 insertions, 4 deletions
diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c
index 505469c7dd..92e4f2d40c 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 || (pos == 0 && ZEND_NUM_ARGS() > 2)) && 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
index 05bc9c1e3c..8c95ea456e 100644
--- a/ext/standard/tests/streams/bug46426.phpt
+++ b/ext/standard/tests/streams/bug46426.phpt
@@ -7,16 +7,28 @@ $tmp = tmpfile();
fwrite($tmp, "12345");
-echo stream_get_contents($tmp, -1, 0);
+echo stream_get_contents($tmp, 2, 1);
+echo "\n";
+echo stream_get_contents($tmp, -1);
echo "\n";
-echo stream_get_contents($tmp, -1, 1);
+echo stream_get_contents($tmp, -1, 0);
echo "\n";
echo stream_get_contents($tmp, -1, 2);
+echo "\n";
+echo stream_get_contents($tmp, 0, 0);
+echo "\n";
+echo stream_get_contents($tmp, 1, 0);
+echo "\n";
+echo stream_get_contents($tmp, -1);
@unlink($tmp);
?>
--EXPECT--
+23
+45
12345
-2345
345
+
+1
+2345