diff options
author | Dmitry Stogov <dmitry@zend.com> | 2018-06-14 02:34:17 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2018-06-14 02:34:17 +0300 |
commit | fcfa006a4e11a95fb0e717b97164dbd4e23297bf (patch) | |
tree | 04f5a12a83cf3edbb09af72e009ec3fb9c3539eb /main/streams/streams.c | |
parent | bc56bb847d317a46b6d95131da1d6596a19f880c (diff) | |
download | php-git-fcfa006a4e11a95fb0e717b97164dbd4e23297bf.tar.gz |
Avoid useless stream buffer copying and workaround with chunk_size manipulation.
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; } |