]> git.ipfire.org Git - thirdparty/zlib-ng.git/commitdiff
Don't write end of last block when returning finish_started.
authorNathan Moinvaziri <nathan@nathanm.com>
Sat, 27 Jun 2020 15:55:40 +0000 (08:55 -0700)
committerHans Kristian Rosbach <hk-github@circlestorm.org>
Sun, 28 Jun 2020 09:17:44 +0000 (11:17 +0200)
deflate_quick.c

index 3e47f2be00f442cfa7b1179d7c6da22ecb331e48..faa90b2783e6ed4a1473f725abdc0fa3ada3fd51 100644 (file)
@@ -37,6 +37,7 @@ extern const ct_data static_dtree[D_CODES];
         zng_tr_emit_end_block(s, static_ltree, last); \
         s->block_open = 0; \
         s->block_start = s->strstart; \
+        flush_pending(s->strm); \
     } \
 } 
 
@@ -108,15 +109,14 @@ ZLIB_INTERNAL block_state deflate_quick(deflate_state *s, int flush) {
 
     s->insert = s->strstart < MIN_MATCH-1 ? s->strstart : MIN_MATCH-1;
 
-    QUICK_END_BLOCK(s, last);
-    flush_pending(s->strm);
-
     if (last) {
         if (s->strm->avail_out == 0)
             return s->strm->avail_in == 0 ? finish_started : need_more;
-        else
-            return finish_done;
+
+        QUICK_END_BLOCK(s, 1);
+        return finish_done;
     }
 
+    QUICK_END_BLOCK(s, 0);
     return block_done;
 }