}
}
#else
- if (likely(match.match_length == 1)) {
- match.strstart++;
- match.match_length = 0;
- }else{
- match.strstart++;
- match.match_length--;
+ match.strstart++;
+ match.match_length--;
+ if (match.match_length > 0) {
if (match.strstart >= match.orgstart) {
- insert_string(s, match.strstart, match.match_length);
+ if (match.strstart + match.match_length - 1 >= match.orgstart) {
+ insert_string(s, match.strstart, match.match_length);
+ } else {
+ insert_string(s, match.strstart, match.orgstart - match.strstart + 1);
+ }
+ match.strstart += match.match_length;
+ match.match_length = 0;
}
- match.strstart += match.match_length;
- match.match_length = 0;
}
#endif
return;
} while (--match.match_length != 0);
#else
if (likely(match.strstart >= match.orgstart)) {
- insert_string(s, match.strstart, match.match_length);
+ if (likely(match.strstart + match.match_length - 1 >= match.orgstart)) {
+ insert_string(s, match.strstart, match.match_length);
+ } else {
+ insert_string(s, match.strstart, match.orgstart - match.strstart + 1);
+ }
}
match.strstart += match.match_length;
match.match_length = 0;
match.strstart += match.match_length;
match.match_length = 0;
s->ins_h = s->window[match.strstart];
- if (match.strstart >= 1)
+ if (match.strstart >= (MIN_MATCH - 2))
#ifndef NOT_TWEAK_COMPILER
insert_string(s, match.strstart + 2 - MIN_MATCH, MIN_MATCH - 2);
#else