[FFmpeg-cvslog] mxfenc: fix memleaks in mxf_write_footer
Andreas Cadhalpun
git at videolan.org
Tue Mar 17 15:17:01 CET 2015
ffmpeg | branch: master | Andreas Cadhalpun <Andreas.Cadhalpun at googlemail.com> | Sat Mar 14 17:47:53 2015 +0100| [39ddda12f17c666bb08abb2493d4adf8835b22c9] | committer: Michael Niedermayer
mxfenc: fix memleaks in mxf_write_footer
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun at googlemail.com>
Reviewed-by: tomas.hardin at codemill.se
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=39ddda12f17c666bb08abb2493d4adf8835b22c9
---
libavformat/mxfenc.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c
index 0c25499..e9c4a9d 100644
--- a/libavformat/mxfenc.c
+++ b/libavformat/mxfenc.c
@@ -2400,7 +2400,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;
@@ -2408,10 +2408,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);
}
@@ -2424,21 +2424,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);
@@ -2448,7 +2449,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)
More information about the ffmpeg-cvslog
mailing list