summaryrefslogtreecommitdiff
path: root/gzwrite.c
diff options
context:
space:
mode:
authorMark Adler <madler@alumni.caltech.edu>2019-04-13 17:05:16 -0700
committerMark Adler <madler@alumni.caltech.edu>2019-04-13 17:08:50 -0700
commit79baebe50e4d6b73ae1f8b603f0ef41300110aa3 (patch)
treece453518c642755fafd819d8e36ba0b79ceff069 /gzwrite.c
parent0e96d8e7c7079ab9f07cc7b57ae3ca9de8c80742 (diff)
downloadzlib-79baebe50e4d6b73ae1f8b603f0ef41300110aa3.tar.gz
Avoid adding empty gzip member after gzflush with Z_FINISH.
Diffstat (limited to 'gzwrite.c')
-rw-r--r--gzwrite.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/gzwrite.c b/gzwrite.c
index 5238133..85b576b 100644
--- a/gzwrite.c
+++ b/gzwrite.c
@@ -97,6 +97,15 @@ local int gz_comp(state, flush)
return 0;
}
+ /* check for a pending reset */
+ if (state->reset) {
+ /* don't start a new gzip member unless there is data to write */
+ if (strm->avail_in == 0)
+ return 0;
+ deflateReset(strm);
+ state->reset = 0;
+ }
+
/* run deflate() on provided input until it produces no more output */
ret = Z_OK;
do {
@@ -134,7 +143,7 @@ local int gz_comp(state, flush)
/* if that completed a deflate stream, allow another to start */
if (flush == Z_FINISH)
- deflateReset(strm);
+ state->reset = 1;
/* all done, no errors */
return 0;