From ba699871142aa312975e870e043ce6af18b6d384 Mon Sep 17 00:00:00 2001 From: Arun Raghavan Date: Fri, 13 Sep 2024 13:55:27 -0400 Subject: [PATCH] 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: --- subprojects/gstreamer/gst/parse/grammar.y.in | 5 +++++ 1 file changed, 5 insertions(+) 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]);