diff options
author | Vittorio Giovara <vittorio.giovara@gmail.com> | 2016-02-24 14:40:17 -0500 |
---|---|---|
committer | Vittorio Giovara <vittorio.giovara@gmail.com> | 2016-02-25 15:20:24 -0500 |
commit | f91d94bdfc3f5f83ff0be4d19d10d0a35697386f (patch) | |
tree | a461c4a6b4acea7a624ae3da0d3b73c850d5fc28 /libavcodec/vc1dec.c | |
parent | 35b1cd343cd703c1b0fc926dc43a92141a357380 (diff) | |
download | ffmpeg-f91d94bdfc3f5f83ff0be4d19d10d0a35697386f.tar.gz |
vc1dec: Properly call deinit function on error
Diffstat (limited to 'libavcodec/vc1dec.c')
-rw-r--r-- | libavcodec/vc1dec.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/libavcodec/vc1dec.c b/libavcodec/vc1dec.c index 2cd7a038d7..2ccbbd54a2 100644 --- a/libavcodec/vc1dec.c +++ b/libavcodec/vc1dec.c @@ -362,20 +362,14 @@ av_cold int ff_vc1_decode_init_alloc_tables(VC1Context *v) if (!v->mv_type_mb_plane || !v->direct_mb_plane || !v->acpred_plane || !v->over_flags_plane || !v->block || !v->cbp_base || !v->ttblk_base || !v->is_intra_base || !v->luma_mv_base || !v->mb_type_base) { - av_freep(&v->mv_type_mb_plane); - av_freep(&v->direct_mb_plane); - av_freep(&v->acpred_plane); - av_freep(&v->over_flags_plane); - av_freep(&v->block); - av_freep(&v->cbp_base); - av_freep(&v->ttblk_base); - av_freep(&v->is_intra_base); - av_freep(&v->luma_mv_base); - av_freep(&v->mb_type_base); - return AVERROR(ENOMEM); + goto error; } return 0; + +error: + ff_vc1_decode_end(s->avctx); + return AVERROR(ENOMEM); } av_cold void ff_vc1_init_transposed_scantables(VC1Context *v) |