diff mbox series

[FFmpeg-devel,4/4] avformat/gxfenc: Add deinit function

Message ID 20200126102739.26495-4-andreas.rheinhardt@gmail.com
State Accepted
Headers show
Series [FFmpeg-devel,1/4] avformat/audiointerleave: Check before dereferencing | expand

Checks

Context Check Description
andriy/ffmpeg-patchwork success Make fate finished

Commit Message

Andreas Rheinhardt Jan. 26, 2020, 10:27 a.m. UTC
Fixes memleaks when the trailer is never written (e.g. if the call to
gxf_write_map_packet() at the end of gxf_write_header() fails).

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
---
 libavformat/gxfenc.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

Comments

Michael Niedermayer Jan. 26, 2020, 4:21 p.m. UTC | #1
On Sun, Jan 26, 2020 at 11:27:39AM +0100, Andreas Rheinhardt wrote:
> Fixes memleaks when the trailer is never written (e.g. if the call to
> gxf_write_map_packet() at the end of gxf_write_header() fails).
> 
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
> ---
>  libavformat/gxfenc.c | 14 ++++++++++----
>  1 file changed, 10 insertions(+), 4 deletions(-)

will apply

[...]
diff mbox series

Patch

diff --git a/libavformat/gxfenc.c b/libavformat/gxfenc.c
index e09b8d7625..9eebefc683 100644
--- a/libavformat/gxfenc.c
+++ b/libavformat/gxfenc.c
@@ -853,8 +853,6 @@  static int gxf_write_trailer(AVFormatContext *s)
     int i;
     int ret;
 
-    ff_audio_interleave_close(s);
-
     gxf_write_eos_packet(pb);
     end = avio_tell(pb);
     avio_seek(pb, 0, SEEK_SET);
@@ -872,10 +870,17 @@  static int gxf_write_trailer(AVFormatContext *s)
 
     avio_seek(pb, end, SEEK_SET);
 
+    return 0;
+}
+
+static void gxf_deinit(AVFormatContext *s)
+{
+    GXFContext *gxf = s->priv_data;
+
+    ff_audio_interleave_close(s);
+
     av_freep(&gxf->flt_entries);
     av_freep(&gxf->map_offsets);
-
-    return 0;
 }
 
 static int gxf_parse_mpeg_frame(GXFStreamContext *sc, const uint8_t *buf, int size)
@@ -1025,5 +1030,6 @@  AVOutputFormat ff_gxf_muxer = {
     .write_header      = gxf_write_header,
     .write_packet      = gxf_write_packet,
     .write_trailer     = gxf_write_trailer,
+    .deinit            = gxf_deinit,
     .interleave_packet = gxf_interleave_packet,
 };