]> granicus.if.org Git - php/commitdiff
MFH (r.163) Handle maxlen when stream can't be mmaped
authorSara Golemon <pollita@php.net>
Wed, 8 Sep 2004 18:45:05 +0000 (18:45 +0000)
committerSara Golemon <pollita@php.net>
Wed, 8 Sep 2004 18:45:05 +0000 (18:45 +0000)
main/streams/streams.c

index 6390600e4a033bc68129d713adae56bac9704370..a0757d38116fb4cf495342024391ab959dee3d66 100755 (executable)
@@ -1211,6 +1211,17 @@ PHPAPI size_t _php_stream_copy_to_mem(php_stream *src, char **buf, size_t maxlen
                }
        }
 
+       if (maxlen > 0) {
+               ptr = *buf = pemalloc_rel_orig(maxlen + 1, persistent);
+               while ((len < maxlen) & !php_stream_eof(src)) {
+                       ret = php_stream_read(src, ptr, maxlen - len);
+                       len += ret;
+                       ptr += ret;
+               }
+               *ptr = '\0';
+               return len;
+       }
+
        /* avoid many reallocs by allocating a good sized chunk to begin with, if
         * we can.  Note that the stream may be filtered, in which case the stat
         * result may be inaccurate, as the filter may inflate or deflate the