From 2ddc07e93e59a6342380d3b5627d0fb32ebb4629 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 12 Feb 2014 17:34:32 +0100 Subject: [PATCH] uridecodebin: Don't leak pad references --- gst/playback/gsturidecodebin.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gst/playback/gsturidecodebin.c b/gst/playback/gsturidecodebin.c index 744127e7c3..5493c45498 100644 --- a/gst/playback/gsturidecodebin.c +++ b/gst/playback/gsturidecodebin.c @@ -1506,12 +1506,13 @@ analyse_source (GstURIDecodeBin * decoder, gboolean * is_raw, gst_iterator_resync (pads_iter); break; case GST_ITERATOR_OK: - pad = g_value_get_object (&item); + pad = g_value_dup_object (&item); /* we now officially have an ouput pad */ *have_out = TRUE; /* if FALSE, this pad has no caps and we continue with the next pad. */ if (!has_all_raw_caps (pad, rawcaps, is_raw)) { + gst_object_unref (pad); g_value_reset (&item); break; } @@ -1538,12 +1539,14 @@ analyse_source (GstURIDecodeBin * decoder, gboolean * is_raw, decoder->queue = outelem; /* get the new raw srcpad */ + gst_object_unref (pad); pad = gst_element_get_static_pad (outelem, "src"); } else { outelem = decoder->source; } expose_decoded_pad (outelem, pad, decoder); } + gst_object_unref (pad); g_value_reset (&item); break; } @@ -1579,6 +1582,7 @@ no_queue2: { post_missing_plugin_error (GST_ELEMENT_CAST (decoder), "queue2"); + gst_object_unref (pad); g_value_unset (&item); gst_iterator_free (pads_iter); gst_caps_unref (rawcaps);