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 ...
This commit is contained in:
Mark Adler 2017-01-15 08:15:55 -08:00
parent 37ed2112a1
commit 7d9c9d410a

View File

@ -1756,6 +1756,8 @@ local block_state deflate_stored(s, flush)
s->block_start = s->strstart; s->block_start = s->strstart;
s->insert += MIN(used, s->w_size - s->insert); 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 the last block was written to next_out, then done. */
if (last) if (last)
@ -1783,6 +1785,8 @@ local block_state deflate_stored(s, flush)
read_buf(s->strm, s->window + s->strstart, have); read_buf(s->strm, s->window + s->strstart, have);
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 /* 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 * stored block to next_out. Write a stored block to pending instead, if we