Bug #73944 [Opn]: dictionary option of intflate_init() does not work

From: Date: Mon, 16 Jan 2017 10:11:00 +0000
Subject: Bug #73944 [Opn]: dictionary option of intflate_init() does not work
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-206660@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=73944&edit=1 ID: 73944 User updated by: someone dot wanted dot to dot be dot unknown at gmail dot com Reported by: someone dot wanted dot to dot be dot unknown at gmail dot com -Summary: dictionary option does not work +Summary: dictionary option of intflate_init() does not work Status: Open Type: Bug Package: Zlib related Operating System: Windows 10 x64 PHP Version: 7.1.0 Block user comment: N Private report: N New Comment: change title Previous Comments: ------------------------------------------------------------------------ [2017-01-16 10:05:32] someone dot wanted dot to dot be dot unknown at gmail dot com Description: ------------ I'm writing an unpacker of MSZIP blocks that use deflate compression. I faced a problem and created a question on stackoverflow (http://stackoverflow.com/questions/41653663/is-there-something-special-in-windows-mszip-format-or-cfdata-in-cab-files), where maintainer of zlib library adviced to use dictionary option to pass raw uncompressed data of previous block to decompress next block of data. But Mark Adler says that this option don't work in current php realisation. > Looks like a bug. I can't get the dictionary option to work at all, even with strings that > don't have nulls. Test script: --------------- $in = inflate_init(ZLIB_ENCODING_RAW); $a = inflate_add($in, file_get_contents('https://github.com/wapmorgan/CabArchive/releases/download/0.0.1-dev/1block')); echo '1 block: '.strlen($a).PHP_EOL; $in = inflate_init(ZLIB_ENCODING_RAW, array('dictionary' => str_replace("\00", null, $a)."\00")); $b = inflate_add($in, file_get_contents('https://github.com/wapmorgan/CabArchive/releases/download/0.0.1-dev/2block')); echo '2 block: '.($b === false ? 'failed' : strlen($b)).PHP_EOL; Expected result: ---------------- 1 block: 32768 2 block: 32768 Actual result: -------------- 1 block: 32768 2 block: failed ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=73944&edit=1

« previous php.bugs (#206660) next »