[FFmpeg-cvslog] Plug some memory leaks in the VP6 decoder

Vitor Sessak git at videolan.org
Sun Dec 25 01:22:19 CET 2011


ffmpeg | branch: release/0.5 | Vitor Sessak <vitor1001 at gmail.com> | Wed Mar  3 17:24:32 2010 +0000| [280590e3380d8649e5b191c653b0f974626c8eeb] | committer: Reinhard Tartler

Plug some memory leaks in the VP6 decoder

Originally committed as revision 22172 to svn://svn.ffmpeg.org/ffmpeg/trunk
(cherry picked from commit 0a41faa9a77dc83d8d933e99f1ba902ecd146e79)

Signed-off-by: Reinhard Tartler <siretart at tauware.de>

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

 libavcodec/vp56.c |   11 +++++++++++
 libavcodec/vp6.c  |    1 +
 2 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/libavcodec/vp56.c b/libavcodec/vp56.c
index ad11b52..c09dbeb 100644
--- a/libavcodec/vp56.c
+++ b/libavcodec/vp56.c
@@ -685,6 +685,7 @@ av_cold void vp56_init(AVCodecContext *avctx, int flip, int has_alpha)
 av_cold int vp56_free(AVCodecContext *avctx)
 {
     VP56Context *s = avctx->priv_data;
+    int pt;
 
     av_free(s->above_blocks);
     av_free(s->macroblocks);
@@ -695,5 +696,15 @@ av_cold int vp56_free(AVCodecContext *avctx)
         avctx->release_buffer(avctx, s->framep[VP56_FRAME_GOLDEN2]);
     if (s->framep[VP56_FRAME_PREVIOUS]->data[0])
         avctx->release_buffer(avctx, s->framep[VP56_FRAME_PREVIOUS]);
+
+    for (pt=0; pt < 2; pt++) {
+        int ct, cg;
+        free_vlc(&s->dccv_vlc[pt]);
+        free_vlc(&s->runv_vlc[pt]);
+        for (ct=0; ct<3; ct++)
+            for (cg = 0; cg < 6; cg++)
+                free_vlc(&s->ract_vlc[pt][ct][cg]);
+    }
+
     return 0;
 }
diff --git a/libavcodec/vp6.c b/libavcodec/vp6.c
index 288227b..0d1b12c 100644
--- a/libavcodec/vp6.c
+++ b/libavcodec/vp6.c
@@ -230,6 +230,7 @@ static void vp6_build_huff_tree(VP56Context *s, uint8_t coeff_model[],
         nodes[map[2*i+1]].count = b + !b;
     }
 
+    free_vlc(vlc);
     /* then build the huffman tree accodring to probabilities */
     ff_huff_build_tree(s->avctx, vlc, size, nodes, vp6_huff_cmp,
                        FF_HUFFMAN_FLAG_HNODE_FIRST);



More information about the ffmpeg-cvslog mailing list