]> git.sesse.net Git - ffmpeg/blobdiff - libavfilter/af_channelmap.c
lavfi/af_amix: fix memory leak
[ffmpeg] / libavfilter / af_channelmap.c
index 9e95a98d00a60e24452f43f43eb31aeaa3287187..dcae2a21d9a81e0ba1780099b3e574c0b3e3f6fd 100644 (file)
@@ -292,14 +292,23 @@ static int channelmap_query_formats(AVFilterContext *ctx)
     int ret;
 
     layouts = ff_all_channel_layouts();
+    if (!layouts) {
+        ret = AVERROR(ENOMEM);
+        goto fail;
+    }
     if ((ret = ff_add_channel_layout     (&channel_layouts, s->output_layout                    )) < 0 ||
         (ret = ff_set_common_formats     (ctx             , ff_planar_sample_fmts()             )) < 0 ||
         (ret = ff_set_common_samplerates (ctx             , ff_all_samplerates()                )) < 0 ||
         (ret = ff_channel_layouts_ref    (layouts         , &ctx->inputs[0]->out_channel_layouts)) < 0 ||
         (ret = ff_channel_layouts_ref    (channel_layouts , &ctx->outputs[0]->in_channel_layouts)) < 0)
-        return ret;
+            goto fail;
 
     return 0;
+fail:
+    if (layouts)
+        av_freep(&layouts->channel_layouts);
+    av_freep(&layouts);
+    return ret;
 }
 
 static int channelmap_filter_frame(AVFilterLink *inlink, AVFrame *buf)