[FFmpeg-cvslog] avcodec/bitstream: Stop allocating one VLCcode more than needed

Andreas Rheinhardt git at videolan.org
Wed Oct 28 12:49:15 EET 2020


ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at gmail.com> | Sat Oct 24 14:23:38 2020 +0200| [81d4b8fb3cdc234d2961b23890aa02d4d29e8842] | committer: Andreas Rheinhardt

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 at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=81d4b8fb3cdc234d2961b23890aa02d4d29e8842
---

 libavcodec/bitstream.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/libavcodec/bitstream.c b/libavcodec/bitstream.c
index 2a796e0a3e..a908c10980 100644
--- a/libavcodec/bitstream.c
+++ b/libavcodec/bitstream.c
@@ -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



More information about the ffmpeg-cvslog mailing list