diff --git a/libavcodec/vorbis_enc.c b/libavcodec/vorbis_enc.c index 7cbd57182527e1df924d0f00b0b05be91f742ab2..95f383ce9a01b0c922dff9197c3eb1661c138439 100644 --- a/libavcodec/vorbis_enc.c +++ b/libavcodec/vorbis_enc.c @@ -773,13 +773,14 @@ static void floor_encode(venc_context_t * venc, floor_t * fc, PutBitContext * pb put_bits(pb, book->entries[cval].len, book->entries[cval].codeword); } for (k = 0; k < c->dim; k++) { - codebook_t * book = &venc->codebooks[c->books[cval & (csub-1)]]; + int book = c->books[cval & (csub-1)]; int entry = coded[counter++]; cval >>= c->subclass; + if (book == -1) continue; if (entry == -1) entry = 0; - assert(entry < book->nentries); + assert(entry < venc->codebooks[book].nentries); assert(entry >= 0); - put_bits(pb, book->entries[entry].len, book->entries[entry].codeword); + put_bits(pb, venc->codebooks[book].entries[entry].len, venc->codebooks[book].entries[entry].codeword); } }