From 30ee36e6301159b1dd9020c05c64cc0a9aa0355f Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Wed, 4 May 2016 09:53:32 +0200 Subject: [PATCH] utils: fix element leak in find_common_root() The root element was not unreffed when iterating over ancestors. https://bugzilla.gnome.org/show_bug.cgi?id=765961 --- gst/gstutils.c | 2 ++ tests/check/pipelines/parse-launch.c | 1 + 2 files changed, 3 insertions(+) diff --git a/gst/gstutils.c b/gst/gstutils.c index 05ab76bee1..be6fa71771 100644 --- a/gst/gstutils.c +++ b/gst/gstutils.c @@ -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; } } diff --git a/tests/check/pipelines/parse-launch.c b/tests/check/pipelines/parse-launch.c index 5d34ad51bd..13419e28f6 100644 --- a/tests/check/pipelines/parse-launch.c +++ b/tests/check/pipelines/parse-launch.c @@ -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; }