diff options
| author | Antony Dovgal <tony2001@php.net> | 2007-12-29 10:52:51 +0000 |
|---|---|---|
| committer | Antony Dovgal <tony2001@php.net> | 2007-12-29 10:52:51 +0000 |
| commit | 6db1f40e3204d6cc6cfd481765fbfec17f909db5 (patch) | |
| tree | f10a89bb430a3af92dbee4fe1c339f8fbdc33350 /main | |
| parent | dbbd4bf1b8e094485b150a38a2eda91693c5eb85 (diff) | |
| download | php-git-6db1f40e3204d6cc6cfd481765fbfec17f909db5.tar.gz | |
correct fix for bug #43522
Diffstat (limited to 'main')
| -rwxr-xr-x | main/streams/streams.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/main/streams/streams.c b/main/streams/streams.c index 39780cd5a4..332cc082b4 100755 --- a/main/streams/streams.c +++ b/main/streams/streams.c @@ -855,10 +855,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) { |
