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.rheinha...@gmail.com>
---
 libavcodec/bitstream.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/libavcodec/bitstream.c b/libavcodec/bitstream.c
index ffa352b28b..39749c6092 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
-- 
2.25.1

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to