summaryrefslogtreecommitdiff
path: root/deflate_quick.c
diff options
context:
space:
mode:
authorNathan Moinvaziri <nathan@nathanm.com>2020-06-27 08:55:40 -0700
committerHans Kristian Rosbach <hk-github@circlestorm.org>2020-06-28 11:17:44 +0200
commitad89d5131b29d15f752ac3ef977784ded1fd12a3 (patch)
tree94a904f096709dec029304ee926e15f73b3056d8 /deflate_quick.c
parent3f6e40d8fc36ad46ea4e78d4a213dc5546f60196 (diff)
Don't write end of last block when returning finish_started.
Diffstat (limited to 'deflate_quick.c')
-rw-r--r--deflate_quick.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/deflate_quick.c b/deflate_quick.c
index 3e47f2b..faa90b2 100644
--- a/deflate_quick.c
+++ b/deflate_quick.c
@@ -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;
}