]> granicus.if.org Git - php/commitdiff
MFB: Fix reading stream filters never notified about EOF
authorMichael Wallner <mike@php.net>
Thu, 20 Apr 2006 17:52:01 +0000 (17:52 +0000)
committerMichael Wallner <mike@php.net>
Thu, 20 Apr 2006 17:52:01 +0000 (17:52 +0000)
main/streams/streams.c

index aaa8c7307f597d06312022f401c64723c3992295..3a8d25b6e34b0f0b0c86fceb839a9b0ff84d4f08 100755 (executable)
@@ -440,7 +440,7 @@ static void php_stream_fill_read_buffer(php_stream *stream, size_t size TSRMLS_D
                /* allocate a buffer for reading chunks */
                chunk_buf = emalloc(stream->chunk_size);
 
-               while (!err_flag && (stream->writepos - stream->readpos < (off_t)size)) {
+               while (!stream->eof && !err_flag && (stream->writepos - stream->readpos < (off_t)size)) {
                        size_t justread = 0;
                        int flags;
                        php_stream_bucket *bucket;
@@ -449,7 +449,7 @@ static void php_stream_fill_read_buffer(php_stream *stream, size_t size TSRMLS_D
 
                        /* read a chunk into a bucket */
                        justread = stream->ops->read(stream, chunk_buf, stream->chunk_size TSRMLS_CC);
-                       if (justread != (size_t)-1) {
+                       if (justread && justread != (size_t)-1) {
                                bucket = php_stream_bucket_new(stream, chunk_buf, justread, 0, 0 TSRMLS_CC);
 
                                /* after this call, bucket is owned by the brigade */