gstutils: Fix a pad leak

When requesting a pad from a template and it's already linked, this
means it was a static pad. Since we only want to return an *available*
pad, we must return NULL ... but we must also remove the reference
we got from getting that static pad.

The "No need to unref" message (which wasn't true for quite some time)
dates back from the very very very first commit introducing the 0.10
features.
This commit is contained in:
Edward Hervey 2016-11-28 13:48:16 +01:00 committed by Edward Hervey
parent 03cf764a00
commit 82c871a8a3

View file

@ -911,10 +911,11 @@ gst_element_request_compatible_pad (GstElement * element,
templ_new = gst_element_get_compatible_pad_template (element, templ);
if (templ_new)
pad = gst_element_get_pad_from_template (element, templ_new);
/* This can happen for non-request pads. No need to unref. */
if (pad && GST_PAD_PEER (pad))
/* This can happen for non-request pads. */
if (pad && GST_PAD_PEER (pad)) {
gst_object_unref (pad);
pad = NULL;
}
return pad;
}