From: Guillaume Desmottes Date: Fri, 24 Feb 2012 13:55:04 +0000 (+0100) Subject: audio-sink: fix GstPad leaks X-Git-Url: https://git.0d.be/?p=empathy.git;a=commitdiff_plain;h=ed191caba6658b580db78a1802f2c8293e4564fb audio-sink: fix GstPad leaks gst_ghost_pad_new() doesn't take ownership of the target pad so we have to unref it ourself. https://bugzilla.gnome.org/show_bug.cgi?id=670745 --- diff --git a/src/empathy-audio-sink.c b/src/empathy-audio-sink.c index fbffa488..b4680a0f 100644 --- a/src/empathy-audio-sink.c +++ b/src/empathy-audio-sink.c @@ -301,7 +301,7 @@ empathy_audio_sink_request_new_pad (GstElement *element, EmpathyGstAudioSink *self = EMPATHY_GST_AUDIO_SINK (element); GstElement *bin, *resample, *audioconvert0, *audioconvert1; GstPad *pad = NULL; - GstPad *subpad, *filterpad; + GstPad *subpad = NULL, *filterpad; bin = gst_bin_new (NULL); @@ -355,6 +355,8 @@ empathy_audio_sink_request_new_pad (GstElement *element, goto error; subpad = gst_ghost_pad_new ("sink", filterpad); + gst_object_unref (filterpad); + if (!gst_element_add_pad (GST_ELEMENT (bin), subpad)) goto error; @@ -362,6 +364,7 @@ empathy_audio_sink_request_new_pad (GstElement *element, pad = gst_ghost_pad_new (name, subpad); g_assert (pad != NULL); + gst_object_unref (subpad); if (!gst_element_sync_state_with_parent (bin)) goto error; @@ -380,6 +383,8 @@ error: gst_object_unref (pad); } + tp_clear_pointer (&subpad, gst_object_unref); + gst_object_unref (bin); g_warning ("Failed to create output subpipeline"); return NULL;