ffmpeg | branch: release/2.6 | Andreas Cadhalpun <andreas.cadhal...@googlemail.com> | Sat Mar 14 17:47:53 2015 +0100| [76ee9fdb61db80339404c43039a9e3912dcb8ad9] | committer: Andreas Cadhalpun
mxfenc: fix memleaks in mxf_write_footer Signed-off-by: Andreas Cadhalpun <andreas.cadhal...@googlemail.com> Reviewed-by: tomas.har...@codemill.se Signed-off-by: Michael Niedermayer <michae...@gmx.at> (cherry picked from commit 39ddda12f17c666bb08abb2493d4adf8835b22c9) Signed-off-by: Andreas Cadhalpun <andreas.cadhal...@googlemail.com> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=76ee9fdb61db80339404c43039a9e3912dcb8ad9 --- libavformat/mxfenc.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c index 7d35af4..eb608ca 100644 --- a/libavformat/mxfenc.c +++ b/libavformat/mxfenc.c @@ -2263,7 +2263,7 @@ static int mxf_write_footer(AVFormatContext *s) { MXFContext *mxf = s->priv_data; AVIOContext *pb = s->pb; - int err; + int err = 0; mxf->duration = mxf->last_indexed_edit_unit + mxf->edit_units_count; @@ -2271,10 +2271,10 @@ static int mxf_write_footer(AVFormatContext *s) mxf->footer_partition_offset = avio_tell(pb); if (mxf->edit_unit_byte_count && s->oformat != &ff_mxf_opatom_muxer) { // no need to repeat index if ((err = mxf_write_partition(s, 0, 0, footer_partition_key, 0)) < 0) - return err; + goto end; } else { if ((err = mxf_write_partition(s, 0, 2, footer_partition_key, 0)) < 0) - return err; + goto end; mxf_write_klv_fill(s); mxf_write_index_table_segment(s); } @@ -2287,21 +2287,22 @@ static int mxf_write_footer(AVFormatContext *s) /* rewrite body partition to update lengths */ avio_seek(pb, mxf->body_partition_offset[0], SEEK_SET); if ((err = mxf_write_opatom_body_partition(s)) < 0) - return err; + goto end; } avio_seek(pb, 0, SEEK_SET); if (mxf->edit_unit_byte_count && s->oformat != &ff_mxf_opatom_muxer) { if ((err = mxf_write_partition(s, 1, 2, header_closed_partition_key, 1)) < 0) - return err; + goto end; mxf_write_klv_fill(s); mxf_write_index_table_segment(s); } else { if ((err = mxf_write_partition(s, 0, 0, header_closed_partition_key, 1)) < 0) - return err; + goto end; } } +end: ff_audio_interleave_close(s); av_freep(&mxf->index_entries); @@ -2311,7 +2312,7 @@ static int mxf_write_footer(AVFormatContext *s) mxf_free(s); - return 0; + return err < 0 ? err : 0; } static int mxf_interleave_get_packet(AVFormatContext *s, AVPacket *out, AVPacket *pkt, int flush) _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog