summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/codecs/libtremor/codebook.c3
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);