diff options
author | Michael Wallner <mike@php.net> | 2014-04-03 10:40:20 +0200 |
---|---|---|
committer | Michael Wallner <mike@php.net> | 2014-04-03 10:40:20 +0200 |
commit | bbd25ca01f456ceaa33db234978b4ee2063d20b4 (patch) | |
tree | dd542a93e58b9a8a2f94b236b844cdd1bbfa11f2 /main/streams/streams.c | |
parent | f17fe2cabc1d6875a1eeca4733b793bcbf3e8078 (diff) | |
parent | d08b4dbf23febd3f305a2682b03ab9c70f11ac60 (diff) | |
download | php-git-bbd25ca01f456ceaa33db234978b4ee2063d20b4.tar.gz |
Merge branch 'PHP-5.4' into PHP-5.5
* PHP-5.4:
Fix Bug #66736 fpassthru broken
Diffstat (limited to 'main/streams/streams.c')
-rw-r--r-- | main/streams/streams.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/main/streams/streams.c b/main/streams/streams.c index 5f467ea6ef..afd2d0a7e1 100644 --- a/main/streams/streams.c +++ b/main/streams/streams.c @@ -1400,11 +1400,16 @@ PHPAPI size_t _php_stream_passthru(php_stream * stream STREAMS_DC TSRMLS_DC) p = php_stream_mmap_range(stream, php_stream_tell(stream), PHP_STREAM_MMAP_ALL, PHP_STREAM_MAP_MODE_SHARED_READONLY, &mapped); if (p) { - PHPWRITE(p, mapped); + do { + /* output functions return int, so pass in int max */ + if (0 < (b = PHPWRITE(p, MIN(mapped - bcount, INT_MAX)))) { + bcount += b; + } + } while (b > 0 && mapped > bcount); php_stream_mmap_unmap_ex(stream, mapped); - return mapped; + return bcount; } } |