From c6fa04834c1cd599b5072ebbee8b2f2f61d0f571 Mon Sep 17 00:00:00 2001 From: Wez Furlong Date: Thu, 13 Feb 2003 21:03:25 +0000 Subject: [PATCH] Fix for Bug #22199 (fputs() + fgets() destroys readbuffer for non-seekable streams). --- main/streams.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/main/streams.c b/main/streams.c index b7385073f4..45eee09077 100755 --- a/main/streams.c +++ b/main/streams.c @@ -863,14 +863,17 @@ PHPAPI size_t _php_stream_write(php_stream *stream, const char *buf, size_t coun justwrote = stream->ops->write(stream, buf, towrite TSRMLS_CC); } if (justwrote > 0) { - stream->position += justwrote; buf += justwrote; count -= justwrote; didwrite += justwrote; - /* FIXME: invalidate the whole readbuffer */ - stream->writepos = 0; - stream->readpos = 0; + /* Only screw with the buffer if we can seek, otherwise we lose data + * buffered from fifos and sockets */ + if (stream->ops->seek && (stream->flags & PHP_STREAM_FLAG_NO_SEEK) == 0) { + stream->position += justwrote; + stream->writepos = 0; + stream->readpos = 0; + } } else { break; } -- 2.40.0