From 7d9c9d410a7f8c732fdb0cac2b268659d624a6b6 Mon Sep 17 00:00:00 2001 From: Mark Adler Date: Sun, 15 Jan 2017 08:15:55 -0800 Subject: [PATCH] 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 ... --- deflate.c | 4 ++++ 1 file changed, 4 insertions(+) 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 -- 2.44.0