[empathy] audio-sink: fix GstPad leaks



commit ed191caba6658b580db78a1802f2c8293e4564fb
Author: Guillaume Desmottes <guillaume desmottes collabora co uk>
Date:   Fri Feb 24 14:55:04 2012 +0100

    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

 src/empathy-audio-sink.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)
---
diff --git a/src/empathy-audio-sink.c b/src/empathy-audio-sink.c
index fbffa48..b4680a0 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;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]