diff mbox series

[FFmpeg-devel,1/2] avdevice/caca: Make deinit function out of write_trailer

Message ID AM7PR03MB6660AE07B8DF36C86E785B148FB39@AM7PR03MB6660.eurprd03.prod.outlook.com
State Accepted
Commit 395803c78f89e1c1ba30b706c2fbf5c1f1cae76d
Headers show
Series [FFmpeg-devel,1/2] avdevice/caca: Make deinit function out of write_trailer | expand

Checks

Context Check Description
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished
andriy/make_ppc success Make finished
andriy/make_fate_ppc success Make fate finished

Commit Message

Andreas Rheinhardt Oct. 9, 2021, 8:44 a.m. UTC
Fixes memleaks in case the trailer is never written.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
 libavdevice/caca.c | 17 ++++++-----------
 1 file changed, 6 insertions(+), 11 deletions(-)

Comments

Paul B Mahol Oct. 9, 2021, 11:59 a.m. UTC | #1
lgtm
diff mbox series

Patch

diff --git a/libavdevice/caca.c b/libavdevice/caca.c
index 5e8d40a748..90afb3b02d 100644
--- a/libavdevice/caca.c
+++ b/libavdevice/caca.c
@@ -41,7 +41,7 @@  typedef struct CACAContext {
     int             list_drivers;
 } CACAContext;
 
-static int caca_write_trailer(AVFormatContext *s)
+static void caca_deinit(AVFormatContext *s)
 {
     CACAContext *c = s->priv_data;
 
@@ -59,7 +59,6 @@  static int caca_write_trailer(AVFormatContext *s)
         caca_free_canvas(c->canvas);
         c->canvas = NULL;
     }
-    return 0;
 }
 
 static void list_drivers(CACAContext *c)
@@ -137,7 +136,7 @@  static int caca_write_header(AVFormatContext *s)
     if (!c->canvas) {
         ret = AVERROR(errno);
         av_log(s, AV_LOG_ERROR, "Failed to create canvas\n");
-        goto fail;
+        return ret;
     }
 
     bpp = av_get_bits_per_pixel(av_pix_fmt_desc_get(encctx->format));
@@ -147,7 +146,7 @@  static int caca_write_header(AVFormatContext *s)
     if (!c->dither) {
         ret =  AVERROR(errno);
         av_log(s, AV_LOG_ERROR, "Failed to create dither\n");
-        goto fail;
+        return ret;
     }
 
 #define CHECK_DITHER_OPT(opt) do {                                              \
@@ -155,7 +154,7 @@  static int caca_write_header(AVFormatContext *s)
         ret = AVERROR(errno);                                                   \
         av_log(s, AV_LOG_ERROR, "Failed to set value '%s' for option '%s'\n",   \
                c->opt, #opt);                                                   \
-        goto fail;                                                              \
+        return ret;                                                             \
     }                                                                           \
 } while (0)
 
@@ -169,7 +168,7 @@  static int caca_write_header(AVFormatContext *s)
         ret = AVERROR(errno);
         av_log(s, AV_LOG_ERROR, "Failed to create display\n");
         list_drivers(c);
-        goto fail;
+        return ret;
     }
 
     if (!c->window_width || !c->window_height) {
@@ -183,10 +182,6 @@  static int caca_write_header(AVFormatContext *s)
     caca_set_display_time(c->display, av_rescale_q(1, st->time_base, AV_TIME_BASE_Q));
 
     return 0;
-
-fail:
-    caca_write_trailer(s);
-    return ret;
 }
 
 static int caca_write_packet(AVFormatContext *s, AVPacket *pkt)
@@ -235,7 +230,7 @@  const AVOutputFormat ff_caca_muxer = {
     .video_codec    = AV_CODEC_ID_RAWVIDEO,
     .write_header   = caca_write_header,
     .write_packet   = caca_write_packet,
-    .write_trailer  = caca_write_trailer,
+    .deinit         = caca_deinit,
     .flags          = AVFMT_NOFILE,
     .priv_class     = &caca_class,
 };