Mercurial > libavcodec.hg
changeset 9951:702e111de423 libavcodec
Fix memory leak in libtheora encoder
Patch by Art Clarke [aclark , xuggle . com]
author | conrad |
---|---|
date | Mon, 13 Jul 2009 01:59:45 +0000 |
parents | a23ecc9d7976 |
children | 4b3abcad0628 |
files | libtheoraenc.c |
diffstat | 1 files changed, 9 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/libtheoraenc.c Sun Jul 12 13:22:01 2009 +0000 +++ b/libtheoraenc.c Mon Jul 13 01:59:45 2009 +0000 @@ -150,6 +150,11 @@ 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 @@ 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 @@ 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 */