diff options
-rw-r--r-- | apps/codecs/libtremor/codebook.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/apps/codecs/libtremor/codebook.c b/apps/codecs/libtremor/codebook.c index 772a81c7f9..b27c2e390f 100644 --- a/apps/codecs/libtremor/codebook.c +++ b/apps/codecs/libtremor/codebook.c | |||
@@ -277,6 +277,7 @@ static long decode_packed_block(codebook *book, oggpack_buffer *b, | |||
277 | long *buf, int n){ | 277 | long *buf, int n){ |
278 | long *bufptr = buf; | 278 | long *bufptr = buf; |
279 | long *bufend = buf + n; | 279 | long *bufend = buf + n; |
280 | const unsigned int cachemask = (1<<book->dec_firsttablen)-1; | ||
280 | 281 | ||
281 | while (bufptr<bufend) { | 282 | while (bufptr<bufend) { |
282 | if (b->headend > 8) { | 283 | if (b->headend > 8) { |
@@ -302,7 +303,7 @@ static long decode_packed_block(codebook *book, oggpack_buffer *b, | |||
302 | bit+=32; | 303 | bit+=32; |
303 | } | 304 | } |
304 | 305 | ||
305 | ogg_int32_t entry = book->dec_firsttable[cache&((1<<book->dec_firsttablen)-1)]; | 306 | ogg_int32_t entry = book->dec_firsttable[cache&cachemask]; |
306 | if(UNLIKELY(entry < 0)){ | 307 | if(UNLIKELY(entry < 0)){ |
307 | const long lo = (entry>>15)&0x7fff, hi = book->used_entries-(entry&0x7fff); | 308 | const long lo = (entry>>15)&0x7fff, hi = book->used_entries-(entry&0x7fff); |
308 | entry = bisect_codelist(lo, hi, cache, book->codelist); | 309 | entry = bisect_codelist(lo, hi, cache, book->codelist); |