utils: fix element leak in find_common_root()
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>
Wed, 4 May 2016 07:53:32 +0000 (09:53 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Wed, 4 May 2016 09:03:53 +0000 (12:03 +0300)
The root element was not unreffed when iterating over ancestors.

https://bugzilla.gnome.org/show_bug.cgi?id=765961

gst/gstutils.c
tests/check/pipelines/parse-launch.c

index 05ab76b..be6fa71 100644 (file)
@@ -1363,11 +1363,13 @@ find_common_root (GstObject * o1, GstObject * o2)
       gst_object_unref (kid2);
       return root;
     }
+    gst_object_unref (root);
     root = kid2;
     if (!object_has_ancestor (o2, kid1, &kid2)) {
       gst_object_unref (kid1);
       return root;
     }
+    gst_object_unref (root);
     root = kid1;
   }
 }
index 5d34ad5..13419e2 100644 (file)
@@ -52,6 +52,7 @@ setup_pipeline (const gchar * pipe_descr)
   fail_unless (pipeline != NULL, "Failed to create pipeline %s", pipe_descr);
   /* Newly returned object should be floating reffed */
   fail_unless (g_object_is_floating (pipeline));
+  g_assert_cmpuint (G_OBJECT (pipeline)->ref_count, ==, 1);
   return pipeline;
 }