compositor: Don't leak all buffers while crossfading and not all pads are crossfading
authorSebastian Dröge <sebastian@centricular.com>
Wed, 25 Jul 2018 21:20:02 +0000 (00:20 +0300)
committerSebastian Dröge <sebastian@centricular.com>
Wed, 25 Jul 2018 21:20:02 +0000 (00:20 +0300)
gst/compositor/compositor.c

index 105fc40..ec62de5 100644 (file)
@@ -833,8 +833,13 @@ gst_compositor_fill_transparent (GstCompositor * self, GstVideoFrame * frame,
 
     if (!gst_video_frame_map (nframe, &frame->info, cbuffer, GST_MAP_WRITE)) {
       GST_WARNING_OBJECT (self, "Could not map output buffer");
+      gst_buffer_unref (cbuffer);
       return GST_FLOW_ERROR;
     }
+
+    /* the last reference is owned by the frame and released once the frame
+     * is unmapped. We leak it if we don't unref here */
+    gst_buffer_unref (cbuffer);
   } else {
     nframe = frame;
   }