aboutsummaryrefslogtreecommitdiff
path: root/c/enc/hash_forgetful_chain_inc.h
diff options
context:
space:
mode:
authorEvgenii Kliuchnikov <eustas@google.com>2024-04-14 06:35:19 -0700
committerCopybara-Service <copybara-worker@google.com>2024-04-14 06:36:02 -0700
commitc1c76e993f1e11a39f7b60395b1196417c86c464 (patch)
tree86d70a45aa081e816ccf345410a026fb4a9c9deb /c/enc/hash_forgetful_chain_inc.h
parent709c4672d4a387f56839e47ed6a985cd2f950a8f (diff)
downloadbrotli-c1c76e993f1e11a39f7b60395b1196417c86c464.zip
brotli-c1c76e993f1e11a39f7b60395b1196417c86c464.tar.gz
brotli-c1c76e993f1e11a39f7b60395b1196417c86c464.tar.bz2
Don't check `cur_ix_masked` against `ring_buffer_mask`.
`cur_ix_masked` isn't changing from iteration to iteration, and `max_length` ensures we never find a match long enough to walk off the ring buffer. PiperOrigin-RevId: 624701948
Diffstat (limited to 'c/enc/hash_forgetful_chain_inc.h')
-rw-r--r--c/enc/hash_forgetful_chain_inc.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/c/enc/hash_forgetful_chain_inc.h b/c/enc/hash_forgetful_chain_inc.h
index 0e28b7e..9a8efeb 100644
--- a/c/enc/hash_forgetful_chain_inc.h
+++ b/c/enc/hash_forgetful_chain_inc.h
@@ -208,7 +208,6 @@ static BROTLI_INLINE void FN(FindLongestMatch)(
score_t best_score = out->score;
size_t best_len = out->len;
size_t i;
- BROTLI_DCHECK(cur_ix_masked + max_length <= ring_buffer_mask);
const size_t key = FN(HashBytes)(&data[cur_ix_masked]);
const uint8_t tiny_hash = (uint8_t)(key);
out->len = 0;
@@ -261,7 +260,8 @@ static BROTLI_INLINE void FN(FindLongestMatch)(
prev_ix = (cur_ix - backward) & ring_buffer_mask;
slot = banks[bank].slots[last].next;
delta = banks[bank].slots[last].delta;
- if (prev_ix + best_len > ring_buffer_mask ||
+ if (cur_ix_masked + best_len > ring_buffer_mask ||
+ prev_ix + best_len > ring_buffer_mask ||
/* compare 4 bytes ending at best_len + 1 */
BrotliUnalignedRead32(&data[cur_ix_masked + best_len - 3]) !=
BrotliUnalignedRead32(&data[prev_ix + best_len - 3])) {