[SCM] libav/experimental: Fix memory leak in libtheora encoder Patch by Art Clarke [aclark , xuggle . com]

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 16:48:56 UTC 2013


The following commit has been merged in the experimental branch:
commit 870ee6f71579f2f3f20dee93d6246d12871c280d
Author: Art Clarke <aclarke at vlideshow.com>
Date:   Mon Jul 13 01:59:45 2009 +0000

    Fix memory leak in libtheora encoder
    Patch by Art Clarke [aclark , xuggle . com]
    
    Originally committed as revision 19423 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavcodec/libtheoraenc.c b/libavcodec/libtheoraenc.c
index f17834e..04b8812 100644
--- a/libavcodec/libtheoraenc.c
+++ b/libavcodec/libtheoraenc.c
@@ -150,6 +150,11 @@ static av_cold int encode_init(AVCodecContext* avc_context)
     if (concatenate_packet( &offset, avc_context, &o_packet ) != 0) {
         return -1;
     }
+    /* Clear up theora_comment struct before we reset the packet */
+    theora_comment_clear( &t_comment );
+    /* And despite documentation to the contrary, theora_comment_clear
+     * does not release the packet */
+    ogg_packet_clear(&o_packet);
 
     /* Tables */
     theora_encode_tables( &(h->t_state), &o_packet );
@@ -157,9 +162,6 @@ static av_cold int encode_init(AVCodecContext* avc_context)
         return -1;
     }
 
-    /* Clear up theora_comment struct */
-    theora_comment_clear( &t_comment );
-
     /* Set up the output AVFrame */
     avc_context->coded_frame= avcodec_alloc_frame();
 
@@ -249,6 +251,10 @@ static av_cold int encode_close(AVCodecContext* avc_context)
 
     result = theora_encode_packetout( &(h->t_state), 1, &o_packet );
     theora_clear( &(h->t_state) );
+    av_freep(&avc_context->coded_frame);
+    av_freep(&avc_context->extradata);
+    avc_context->extradata_size = 0;
+
     switch (result) {
         case 0:/* No packet is ready */
         case -1:/* Encoding finished */

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list