diff options
Diffstat (limited to 'main/streams/streams.c')
-rw-r--r-- | main/streams/streams.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/main/streams/streams.c b/main/streams/streams.c index b82f092f0c..6f77b29af8 100644 --- a/main/streams/streams.c +++ b/main/streams/streams.c @@ -624,7 +624,9 @@ PHPAPI void _php_stream_fill_read_buffer(php_stream *stream, size_t size) /* reduce buffer memory consumption if possible, to avoid a realloc */ if (stream->readbuf && stream->readbuflen - stream->writepos < stream->chunk_size) { - memmove(stream->readbuf, stream->readbuf + stream->readpos, stream->readbuflen - stream->readpos); + if (stream->writepos > stream->readpos) { + memmove(stream->readbuf, stream->readbuf + stream->readpos, stream->writepos - stream->readpos); + } stream->writepos -= stream->readpos; stream->readpos = 0; } |