diff options
author | Matthias Clasen <mclasen@redhat.com> | 2016-02-26 14:47:16 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2016-02-26 15:52:19 -0500 |
commit | 2cabfcc80100b1863e82439e7b39eed024eb3a24 (patch) | |
tree | 930b4bf0a06d0d45dce3ac7b5456ba9b5d8bb752 /gtk/gtkbuilder.c | |
parent | 9f37557ffc2441150f6855e04c17d9f4e793cfb1 (diff) | |
download | gtk+-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.c | 18 |
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); |