php_stream_from_zval(stream, &zsrc);
- if ((pos != 0L) && php_stream_seek(stream, pos, SEEK_CUR) < 0) {
+ if ((pos > 0L) && php_stream_seek(stream, pos, SEEK_CUR) < 0) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Failed to seek %ld bytes from current position in the stream", pos);
RETURN_FALSE;
} else if (pos < 0L) {
fwrite($tmp, b"12345");
-echo stream_get_contents($tmp, 2, 1);
+fseek($tmp, 0);
+echo stream_get_contents($tmp, 2, 1); //23
echo "\n";
-echo stream_get_contents($tmp, -1);
+echo stream_get_contents($tmp, -1); //45
echo "\n";
-echo stream_get_contents($tmp, -1, 0);
+fseek($tmp, -1, SEEK_CUR);
+echo stream_get_contents($tmp, -1, 0); //5
echo "\n";
-echo stream_get_contents($tmp, -1, 2);
+fseek($tmp, 0);
+echo stream_get_contents($tmp, -1, 2); //345
echo "\n";
-echo stream_get_contents($tmp, 0, 0);
+fseek($tmp, 0);
+echo stream_get_contents($tmp, 0, 0); //""
echo "\n";
-echo stream_get_contents($tmp, 1, 0);
+echo stream_get_contents($tmp, 1, 0); //1
echo "\n";
-echo stream_get_contents($tmp, -1);
+echo stream_get_contents($tmp, -1); //2345
@unlink($tmp);
--EXPECT--
23
45
-12345
+5
345
1
echo stream_get_contents($tmp, 2, 5), "--\n";
echo stream_get_contents($tmp, 2), "--\n";
+fseek($tmp, 0);
echo stream_get_contents($tmp, 2, 3), "--\n";
echo stream_get_contents($tmp, 2, -1), "--\n";
@unlink($tmp);
?>
---EXPECT--
+--EXPECTF--
--
--
45--
+
+Warning: stream_get_contents(): Number of bytes to seek must be non-negative, given -1 in %s on line %d
--