From: Arun Raghavan Date: Fri, 13 Sep 2024 17:55:27 +0000 (-0400) Subject: gstreamer: parse: Make sure children are bins before recursing in X-Git-Tag: 1.24.9~89 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e68ff6724e55369c1ea5383a0dc1ec891695f185;p=platform%2Fupstream%2Fgstreamer.git gstreamer: parse: Make sure children are bins before recursing in A deferred set of the form parentbin::childelement::pad works in the non-deferred property setting path, but the deferred path assumes that all non-root non-leaf children specify bins. We already have a bin check on the root, so let's add one for other non-leaves to avoid a critical. Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3806 Part-of: --- diff --git a/subprojects/gstreamer/gst/parse/grammar.y.in b/subprojects/gstreamer/gst/parse/grammar.y.in index 4588cac834..57563d7693 100644 --- a/subprojects/gstreamer/gst/parse/grammar.y.in +++ b/subprojects/gstreamer/gst/parse/grammar.y.in @@ -370,6 +370,11 @@ static void gst_parse_add_delayed_set (GstElement *element, gchar *name, gchar * parent = gst_bin_get_by_name (GST_BIN_CAST (element), current[0]); current++; while (parent && current[0]) { + if (!GST_IS_BIN (parent)) { + GST_INFO ("Not recursing into non-bin child %s", + gst_object_get_name (GST_OBJECT (parent))); + break; + } child = gst_bin_get_by_name (GST_BIN (parent), current[0]); if (!child && current[1]) { char *sub_name = g_strjoinv ("::", ¤t[0]);