summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/bz2/tests/bug51997.phpt24
-rwxr-xr-xmain/streams/streams.c2
2 files changed, 25 insertions, 1 deletions
diff --git a/ext/bz2/tests/bug51997.phpt b/ext/bz2/tests/bug51997.phpt
new file mode 100644
index 0000000000..fea5398947
--- /dev/null
+++ b/ext/bz2/tests/bug51997.phpt
@@ -0,0 +1,24 @@
+--TEST--
+Bug #51997 (SEEK_CUR with 0 value, returns a warning)
+--SKIPIF--
+<?php if (!extension_loaded("bz2")) print "skip"; ?>
+--FILE--
+<?php
+
+error_reporting(E_ALL);
+
+$filename = "testfile.bz2";
+$str = "This is a test string.\n";
+$bz = bzopen($filename, "w");
+bzwrite($bz, $str);
+bzclose($bz);
+
+$bz = bzopen($filename, "r");
+fseek($bz, 0, SEEK_CUR);
+print bzread($bz, 10);
+print bzread($bz);
+bzclose($bz);
+unlink($filename);
+
+--EXPECT--
+This is a test string.
diff --git a/main/streams/streams.c b/main/streams/streams.c
index 1017f22124..673795971a 100755
--- a/main/streams/streams.c
+++ b/main/streams/streams.c
@@ -1255,7 +1255,7 @@ PHPAPI int _php_stream_seek(php_stream *stream, off_t offset, int whence TSRMLS_
}
/* emulate forward moving seeks with reads */
- if (whence == SEEK_CUR && offset > 0) {
+ if (whence == SEEK_CUR && offset >= 0) {
char tmp[1024];
size_t didread;
while(offset > 0) {