ghostpad: hold a reference to the target pad while unlinking it
authorGeorge Kiagiadakis <george.kiagiadakis@collabora.com>
Thu, 6 Mar 2014 10:40:23 +0000 (12:40 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Thu, 6 Mar 2014 19:46:28 +0000 (20:46 +0100)
https://bugzilla.gnome.org/show_bug.cgi?id=725809

gst/gstghostpad.c

index 98712d8..47e9dce 100644 (file)
@@ -836,7 +836,7 @@ gst_ghost_pad_set_target (GstGhostPad * gpad, GstPad * newtarget)
     GST_DEBUG_OBJECT (gpad, "clearing target");
 
   /* clear old target */
-  if ((oldtarget = GST_PROXY_PAD_TARGET (gpad))) {
+  if ((oldtarget = gst_pad_get_peer (internal))) {
     GST_OBJECT_UNLOCK (gpad);
 
     /* unlink internal pad */
@@ -844,6 +844,8 @@ gst_ghost_pad_set_target (GstGhostPad * gpad, GstPad * newtarget)
       gst_pad_unlink (internal, oldtarget);
     else
       gst_pad_unlink (oldtarget, internal);
+
+    gst_object_unref (oldtarget);
   } else {
     GST_OBJECT_UNLOCK (gpad);
   }