1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-01-13 21:28:01 +02:00

avcodec/bitstream: Stop allocating one VLCcode more than needed

Allocating one temporary entry more than needed was made necessary by
the COPY loop below writing an element before having checked that it
should be written at all. But given that this behaviour changed, the
need for overallocating is gone.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
This commit is contained in:
Andreas Rheinhardt 2020-10-24 14:23:38 +02:00
parent e75b6ec43b
commit 81d4b8fb3c

View File

@ -281,7 +281,7 @@ int ff_init_vlc_sparse(VLC *vlc_arg, int nb_bits, int nb_codes,
vlc = vlc_arg;
vlc->bits = nb_bits;
if (flags & INIT_VLC_USE_NEW_STATIC) {
av_assert0(nb_codes + 1 <= FF_ARRAY_ELEMS(localbuf));
av_assert0(nb_codes <= FF_ARRAY_ELEMS(localbuf));
localvlc = *vlc_arg;
vlc = &localvlc;
vlc->table_size = 0;
@ -290,8 +290,8 @@ int ff_init_vlc_sparse(VLC *vlc_arg, int nb_bits, int nb_codes,
vlc->table_allocated = 0;
vlc->table_size = 0;
}
if (nb_codes + 1 > FF_ARRAY_ELEMS(localbuf)) {
buf = av_malloc_array((nb_codes + 1), sizeof(VLCcode));
if (nb_codes > FF_ARRAY_ELEMS(localbuf)) {
buf = av_malloc_array(nb_codes, sizeof(VLCcode));
if (!buf)
return AVERROR(ENOMEM);
} else