summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntony Dovgal <tony2001@php.net>2007-12-29 10:52:24 +0000
committerAntony Dovgal <tony2001@php.net>2007-12-29 10:52:24 +0000
commit2dab3c40fe2111cb86d1d71764c7759026b1f6d1 (patch)
tree7bcc27d1e8525ea65db9613ba5169aa8eaa40586
parent611bd33689f1e8f4b5de05b906d44930a0bcc7c2 (diff)
downloadphp-git-2dab3c40fe2111cb86d1d71764c7759026b1f6d1.tar.gz
correct fix for bug #43522
-rwxr-xr-xmain/streams/streams.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/main/streams/streams.c b/main/streams/streams.c
index d627b55514..c87e89d567 100755
--- a/main/streams/streams.c
+++ b/main/streams/streams.c
@@ -859,10 +859,17 @@ PHPAPI char *php_stream_get_record(php_stream *stream, size_t maxlen, size_t *re
if (delim_len == 0 || !delim) {
toread = maxlen;
} else {
+ size_t seek_len;
+
+ seek_len = stream->writepos - stream->readpos;
+ if (seek_len > maxlen) {
+ seek_len = maxlen;
+ }
+
if (delim_len == 1) {
- e = memchr(stream->readbuf + stream->readpos, *delim, maxlen);
+ e = memchr(stream->readbuf + stream->readpos, *delim, seek_len);
} else {
- e = php_memnstr(stream->readbuf + stream->readpos, delim, delim_len, (stream->readbuf + stream->readpos + maxlen));
+ e = php_memnstr(stream->readbuf + stream->readpos, delim, delim_len, (stream->readbuf + stream->readpos + seek_len));
}
if (!e) {