diff options
author | aspect <aspect+tclcore@abstracted-spleen.org> | 2017-02-11 05:06:43 (GMT) |
---|---|---|
committer | aspect <aspect+tclcore@abstracted-spleen.org> | 2017-02-11 05:06:43 (GMT) |
commit | f76fe71e68ec63ca5fd7068025e772ffdf758789 (patch) | |
tree | 46b270062bcf137bb51ad8d346512637a48bd515 | |
parent | 9b8fe92d1ec10b1010d91d504deab315538cce0e (diff) | |
download | tcl-f76fe71e68ec63ca5fd7068025e772ffdf758789.zip tcl-f76fe71e68ec63ca5fd7068025e772ffdf758789.tar.gz tcl-f76fe71e68ec63ca5fd7068025e772ffdf758789.tar.bz2 |
zlib stream finalize calls deflate with no input - this case (and this case
only) must be allowed.
Fixes 2nd issue in [25842c161f], introduced by [c1aff52ef3]
-rw-r--r-- | generic/tclZlib.c | 4 | ||||
-rw-r--r-- | tests/zlib.test | 12 |
2 files changed, 14 insertions, 2 deletions
diff --git a/generic/tclZlib.c b/generic/tclZlib.c index e5a5946..82486d2 100644 --- a/generic/tclZlib.c +++ b/generic/tclZlib.c @@ -1204,10 +1204,10 @@ Tcl_ZlibStreamPut( zshPtr->stream.avail_in = size; /* - * Must not do a zero-length compress. [Bug 25842c161] + * Must not do a zero-length compress unless finalizing. [Bug 25842c161] */ - if (size == 0) { + if (size == 0 && flush != Z_FINISH) { return TCL_OK; } diff --git a/tests/zlib.test b/tests/zlib.test index ae8742b..3ee7a45 100644 --- a/tests/zlib.test +++ b/tests/zlib.test @@ -157,6 +157,18 @@ test zlib-7.8 {zlib stream: Bug b26e38a3e4} -constraints zlib -setup { catch {$strm close} unset -nocomplain randdata data } -result {120185 18003000} +test zlib-7.9 {zlib stream finalize (bug 25842c161)} -constraints zlib -setup { + set z1 [zlib stream gzip] + set z2 [zlib stream gzip] +} -body { + $z1 put ABCDEedbca.. + $z1 finalize + $z2 put -finalize ABCDEedbca.. + expr {[$z1 get] eq [$z2 get]} +} -cleanup { + $z1 close + $z2 close +} -result 1 test zlib-8.1 {zlib transformation} -constraints zlib -setup { set file [makeFile {} test.gz] |