decodebin3: fix collection leak
authorGuillaume Desmottes <guillaume.desmottes@collabora.com>
Tue, 25 May 2021 12:41:51 +0000 (14:41 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Mon, 18 Apr 2022 06:41:12 +0000 (09:41 +0300)
get_merged_collection() returns an owned stream collection and was
leaked in the else block.

Fix leak when running:
GST_TRACERS=leaks GST_DEBUG="GST_TRACER:7,leaks:6" gst-play-1.0 --use-playbin3 test.mkv

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/954>

subprojects/gst-plugins-base/gst/playback/gstdecodebin3.c

index 514cd1a..f8a2ec4 100644 (file)
@@ -927,8 +927,11 @@ gst_decodebin3_input_pad_unlink (GstPad * pad, GstObject * parent)
       SELECTION_UNLOCK (dbin);
       gst_element_post_message (GST_ELEMENT_CAST (dbin), msg);
       update_requested_selection (dbin);
-    } else
+    } else {
+      if (collection)
+        gst_object_unref (collection);
       SELECTION_UNLOCK (dbin);
+    }
 
     gst_bin_remove (GST_BIN (dbin), input->parsebin);
     gst_element_set_state (input->parsebin, GST_STATE_NULL);