hm = h & s->hash_mask;
head = s->head[hm];
- if (head != str) {
+ if (LIKELY(head != str)) {
s->prev[str & s->w_mask] = head;
s->head[hm] = str;
}
* (except for the last MIN_MATCH-1 bytes of the input file).
*/
ZLIB_INTERNAL Pos INSERT_STRING(deflate_state *const s, const uint32_t str, uint32_t count) {
- Pos idx, ret = 0;
+ Pos head, idx, ret = 0;
uint8_t *strstart = s->window + str;
uint8_t *strend = strstart + count - 1; /* last position */
uint32_t hash_mask = s->hash_mask;
UPDATE_HASH(s, h, val);
hm = h & hash_mask;
- Pos head = s->head[hm];
- if (head != idx) {
+ head = s->head[hm];
+ if (LIKELY(head != idx)) {
s->prev[idx & s->w_mask] = head;
s->head[hm] = idx;
- if (strstart == strend)
- ret = head;
- } else if (strstart == strend) {
- ret = idx;
}
}
+
+ if (strstart == strend) {
+ if (head != idx)
+ ret = head;
+ else
+ ret = idx;
+ }
return ret;
}
#endif