summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Adler <madler@alumni.caltech.edu>2017-01-15 08:15:55 -0800
committerMark Adler <madler@alumni.caltech.edu>2017-01-15 09:29:27 -0800
commit7d9c9d410a7f8c732fdb0cac2b268659d624a6b6 (patch)
tree28364d8e65fd21ae538277caa0b306c6cb25d181
parent37ed2112a1727293f4fd431df85dc821ee475d3d (diff)
downloadzlib-7d9c9d410a7f8c732fdb0cac2b268659d624a6b6.tar.gz
zlib-7d9c9d410a7f8c732fdb0cac2b268659d624a6b6.tar.bz2
zlib-7d9c9d410a7f8c732fdb0cac2b268659d624a6b6.zip
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 ...
-rw-r--r--deflate.c4
1 files changed, 4 insertions, 0 deletions
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)
1756 s->block_start = s->strstart; 1756 s->block_start = s->strstart;
1757 s->insert += MIN(used, s->w_size - s->insert); 1757 s->insert += MIN(used, s->w_size - s->insert);
1758 } 1758 }
1759 if (s->high_water < s->strstart)
1760 s->high_water = s->strstart;
1759 1761
1760 /* If the last block was written to next_out, then done. */ 1762 /* If the last block was written to next_out, then done. */
1761 if (last) 1763 if (last)
@@ -1783,6 +1785,8 @@ local block_state deflate_stored(s, flush)
1783 read_buf(s->strm, s->window + s->strstart, have); 1785 read_buf(s->strm, s->window + s->strstart, have);
1784 s->strstart += have; 1786 s->strstart += have;
1785 } 1787 }
1788 if (s->high_water < s->strstart)
1789 s->high_water = s->strstart;
1786 1790
1787 /* There was not enough avail_out to write a complete worthy or flushed 1791 /* There was not enough avail_out to write a complete worthy or flushed
1788 * stored block to next_out. Write a stored block to pending instead, if we 1792 * stored block to next_out. Write a stored block to pending instead, if we