coder->lz.stream_end_was_reached. That variable
will be removed, and the check isn't required anyway.
Rearrange the check so that it doesn't make one to
think that there could be an integer overflow.
uint32_t limit = MATCH_MAX_LEN - *len_res;
assert(offset + limit < coder->lz.keep_size_after);
+ assert(coder->lz.read_pos <= coder->lz.write_pos);
// If we are close to end of the stream, we may need
// to limit the length of the match.
- if (coder->lz.stream_end_was_reached
- && coder->lz.write_pos
- < coder->lz.read_pos + offset + limit)
+ if (coder->lz.write_pos - coder->lz.read_pos
+ < offset + limit)
limit = coder->lz.write_pos
- (coder->lz.read_pos + offset);