if (flush == Z_FINISH) {
static_emit_end_block(s, 1);
if (s->strm->avail_out == 0)
- return finish_started;
+ return s->strm->avail_in == 0 ? finish_started : need_more;
else
return finish_done;
}
if (current->match_length <= 1)
return;
+ if (unlikely(current->match_length > 1 + next->match_start))
+ return;
+
+ if (unlikely(current->match_length > 1 + next->strstart))
+ return;
+
match = s->window - current->match_length + 1 + next->match_start;
orig = s->window - current->match_length + 1 + next->strstart;