diff options
Diffstat (limited to 'libavcodec/bitstream.c')
-rw-r--r-- | libavcodec/bitstream.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/libavcodec/bitstream.c b/libavcodec/bitstream.c index e7c476ba4b..8e9f657b7f 100644 --- a/libavcodec/bitstream.c +++ b/libavcodec/bitstream.c @@ -106,12 +106,17 @@ static int alloc_table(VLC *vlc, int size, int use_static) vlc->table_size += size; if (vlc->table_size > vlc->table_allocated) { + int err; if (use_static) return AVERROR_BUG; vlc->table_allocated += (1 << vlc->bits); - vlc->table = av_realloc(vlc->table, sizeof(VLC_TYPE) * 2 * vlc->table_allocated); - if (!vlc->table) - return AVERROR(ENOMEM); + if ((err = av_reallocp(&vlc->table, + sizeof(VLC_TYPE) * 2 * + vlc->table_allocated)) < 0) { + vlc->table_allocated = 0; + vlc->table_size = 0; + return err; + } } return index; } |