ID: 43400 User updated by: witekfl at poczta dot onet dot pl Reported By: witekfl at poczta dot onet dot pl Status: Open -Bug Type: Streams related +Bug Type: Zlib Related Operating System: Linux PHP Version: 5.2.5 New Comment:
This patch solves the problem: --- php-5.2.2/ext/zlib/zlib_filter.c.old 2007-05-07 19:42:29.000000000 +0 200 +++ php-5.2.2/ext/zlib/zlib_filter.c 2007-05-07 21:35:25.000000000 +0200 @@ -100,11 +100,6 @@ consumed += desired; bin += desired; - if (!desired) { - flags |= PSFS_FLAG_FLUSH_CLOSE; - break; - } - if (data->strm.avail_out < data->outbuf_len) { php_stream_bucket *out_bucket; size_t bucketlen = data->outbuf_len - data->strm .avail_out; @@ -213,11 +208,6 @@ consumed += desired; bin += desired; - if (!desired) { - flags |= PSFS_FLAG_FLUSH_CLOSE; - break; - } - if (data->strm.avail_out < data->outbuf_len) { php_stream_bucket *out_bucket; size_t bucketlen = data->outbuf_len - data->strm .avail_out; Previous Comments: ------------------------------------------------------------------------ [2007-11-25 19:02:12] witekfl at poczta dot onet dot pl Description: ------------ The deflate filter doesn't compress all data. The decompressed data is 1721662 bytes long. Reproduce code: --------------- <?php $f = fopen("http://republika.pl/rkd/data.bz2", "rb"); $data = ''; while (!feof($f)) { $data .= fread($f, 32768); } fclose($f); $text = bzdecompress($data); $f3 = fopen("data.html.deflate", "wb"); stream_filter_append($f3, 'zlib.deflate', STREAM_FILTER_WRITE); fwrite($f3, $text); fclose($f3); $f5 = fopen("data.html.deflate", "rb"); stream_filter_append($f5, 'zlib.inflate', STREAM_FILTER_READ); $text_deflate = ''; while (!feof($f5)) { $text_deflate .= fread($f5, 32768); } fclose($f5); printf("original = %d, deflate = %d\n", strlen($text), strlen($text_deflate)); ?> Expected result: ---------------- original = 1721662, deflate = 1721662 Actual result: -------------- original = 1721662, deflate = 546816 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=43400&edit=1