Skip to content

Commit

Permalink
Limit hash table inserts after switch from stored deflate.
Browse files Browse the repository at this point in the history
  • Loading branch information
rlidwka committed Jun 10, 2022
1 parent 2326b42 commit b579434
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion lib/zlib/deflate.js
Original file line number Diff line number Diff line change
Expand Up @@ -380,6 +380,9 @@ const fill_window = (s) => {
s.strstart -= _w_size;
/* we now have strstart >= MAX_DIST */
s.block_start -= _w_size;
if (s.insert > s.strstart) {
s.insert = s.strstart;
}
slide_hash(s);
more += _w_size;
}
Expand Down Expand Up @@ -591,6 +594,7 @@ const deflate_stored = (s, flush) => {
//zmemcpy(s->window, s->strm->next_in - s->w_size, s->w_size);
s.window.set(s.strm.input.subarray(s.strm.next_in - s.w_size, s.strm.next_in), 0);
s.strstart = s.w_size;
s.insert = s.strstart;
}
else {
if (s.window_size - s.strstart <= used) {
Expand All @@ -601,13 +605,16 @@ const deflate_stored = (s, flush) => {
if (s.matches < 2) {
s.matches++; /* add a pending slide_hash() */
}
if (s.insert > s.strstart) {
s.insert = s.strstart;
}
}
//zmemcpy(s->window + s->strstart, s->strm->next_in - used, used);
s.window.set(s.strm.input.subarray(s.strm.next_in - used, s.strm.next_in), s.strstart);
s.strstart += used;
s.insert += used > s.w_size - s.insert ? s.w_size - s.insert : used;
}
s.block_start = s.strstart;
s.insert += used > s.w_size - s.insert ? s.w_size - s.insert : used;
}
if (s.high_water < s.strstart) {
s.high_water = s.strstart;
Expand Down Expand Up @@ -636,13 +643,17 @@ const deflate_stored = (s, flush) => {
s.matches++; /* add a pending slide_hash() */
}
have += s.w_size; /* more space now */
if (s.insert > s.strstart) {
s.insert = s.strstart;
}
}
if (have > s.strm.avail_in) {
have = s.strm.avail_in;
}
if (have) {
read_buf(s.strm, s.window, s.strstart, have);
s.strstart += have;
s.insert += have > s.w_size - s.insert ? s.w_size - s.insert : have;
}
if (s.high_water < s.strstart) {
s.high_water = s.strstart;
Expand Down

0 comments on commit b579434

Please sign in to comment.