summaryrefslogtreecommitdiff
path: root/gtk/gtkbuilder.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2016-02-26 14:47:16 -0500
committerMatthias Clasen <mclasen@redhat.com>2016-02-26 15:52:19 -0500
commit2cabfcc80100b1863e82439e7b39eed024eb3a24 (patch)
tree930b4bf0a06d0d45dce3ac7b5456ba9b5d8bb752 /gtk/gtkbuilder.c
parent9f37557ffc2441150f6855e04c17d9f4e793cfb1 (diff)
downloadgtk+-2cabfcc80100b1863e82439e7b39eed024eb3a24.tar.gz
Avoid an a crash with GTK_DEBUG=builder
We might cast objects to GtkBuildable even if they aren't, to print their names. Don't do that. Found by gcc's address sanitizer.
Diffstat (limited to 'gtk/gtkbuilder.c')
-rw-r--r--gtk/gtkbuilder.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/gtk/gtkbuilder.c b/gtk/gtkbuilder.c
index f742374db3..1b7a0f9684 100644
--- a/gtk/gtkbuilder.c
+++ b/gtk/gtkbuilder.c
@@ -541,6 +541,15 @@ gtk_builder_get_parameters (GtkBuilder *builder,
}
}
+static const gchar *
+object_get_name (GObject *object)
+{
+ if (GTK_IS_BUILDABLE (object))
+ return gtk_buildable_get_name (GTK_BUILDABLE (object));
+ else
+ return g_object_get_data (object, "gtk-builder-name");
+}
+
static GObject *
gtk_builder_get_internal_child (GtkBuilder *builder,
ObjectInfo *info,
@@ -561,7 +570,7 @@ gtk_builder_get_internal_child (GtkBuilder *builder,
GTK_NOTE (BUILDER,
g_print ("Trying to get internal child %s from %s\n",
childname,
- gtk_buildable_get_name (GTK_BUILDABLE (info->object))));
+ object_get_name (info->object)));
if (GTK_IS_BUILDABLE (info->object))
obj = gtk_buildable_get_internal_child (GTK_BUILDABLE (info->object),
@@ -850,8 +859,7 @@ _gtk_builder_add (GtkBuilder *builder,
if (!child_info->parent)
{
- g_warning ("%s: Not adding, No parent",
- gtk_buildable_get_name (GTK_BUILDABLE (object)));
+ g_warning ("%s: Not adding, No parent", object_get_name (object));
return;
}
@@ -861,9 +869,7 @@ _gtk_builder_add (GtkBuilder *builder,
g_assert (GTK_IS_BUILDABLE (parent));
GTK_NOTE (BUILDER,
- g_print ("adding %s to %s\n",
- gtk_buildable_get_name (GTK_BUILDABLE (object)),
- gtk_buildable_get_name (GTK_BUILDABLE (parent))));
+ g_print ("adding %s to %s\n", object_get_name (object), object_get_name (parent)));
gtk_buildable_add_child (GTK_BUILDABLE (parent), builder, object,
child_info->type);