From: Mark Adler Date: Sun, 15 Jan 2017 16:15:55 +0000 (-0800) Subject: Update high water mark in deflate_stored. X-Git-Tag: v1.2.11~2 X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=7d9c9d410a7f8c732fdb0cac2b268659d624a6b6;p=zlib.git Update high water mark in deflate_stored. This avoids unnecessary filling of bytes in the sliding window buffer when switching from level zero to a non-zero level. This also provides a consistent indication of deflate having taken input for a later commit ... --- diff --git a/deflate.c b/deflate.c index 0aa020e..8a1a91e 100644 --- a/deflate.c +++ b/deflate.c @@ -1756,6 +1756,8 @@ local block_state deflate_stored(s, flush) s->block_start = s->strstart; s->insert += MIN(used, s->w_size - s->insert); } + if (s->high_water < s->strstart) + s->high_water = s->strstart; /* If the last block was written to next_out, then done. */ if (last) @@ -1783,6 +1785,8 @@ local block_state deflate_stored(s, flush) read_buf(s->strm, s->window + s->strstart, have); s->strstart += have; } + if (s->high_water < s->strstart) + s->high_water = s->strstart; /* There was not enough avail_out to write a complete worthy or flushed * stored block to next_out. Write a stored block to pending instead, if we