From 6f4e2b5a9564d012c05ba361020768c925dda5e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A5ns=20Rullg=C3=A5rd?= Date: Sun, 24 Feb 2008 18:56:52 +0000 Subject: [PATCH] fix memory leaks in vp3 decoder Originally committed as revision 12191 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/vp3.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/libavcodec/vp3.c b/libavcodec/vp3.c index 2beb93fb39..eade1eb3cf 100644 --- a/libavcodec/vp3.c +++ b/libavcodec/vp3.c @@ -2313,7 +2313,9 @@ if (!s->keyframe) { static int vp3_decode_end(AVCodecContext *avctx) { Vp3DecodeContext *s = avctx->priv_data; + int i; + av_free(s->superblock_coding); av_free(s->all_fragments); av_free(s->coeffs); av_free(s->coded_fragment_list); @@ -2322,6 +2324,19 @@ static int vp3_decode_end(AVCodecContext *avctx) av_free(s->macroblock_fragments); av_free(s->macroblock_coding); + for (i = 0; i < 16; i++) { + free_vlc(&s->dc_vlc[i]); + free_vlc(&s->ac_vlc_1[i]); + free_vlc(&s->ac_vlc_2[i]); + free_vlc(&s->ac_vlc_3[i]); + free_vlc(&s->ac_vlc_4[i]); + } + + free_vlc(&s->superblock_run_length_vlc); + free_vlc(&s->fragment_run_length_vlc); + free_vlc(&s->mode_code_vlc); + free_vlc(&s->motion_vector_vlc); + /* release all frames */ if (s->golden_frame.data[0] && s->golden_frame.data[0] != s->last_frame.data[0]) avctx->release_buffer(avctx, &s->golden_frame);