From f48b894468a64e6bf55579e81460815ef3d4b268 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 3 Apr 2022 15:53:34 -0400 Subject: [PATCH 1/2] inspector: Avoid a crash Attribute lists can be NULL, it turns out. --- gtk/inspector/prop-editor.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gtk/inspector/prop-editor.c b/gtk/inspector/prop-editor.c index db3d6f2c1b..05048f5472 100644 --- a/gtk/inspector/prop-editor.c +++ b/gtk/inspector/prop-editor.c @@ -405,7 +405,7 @@ attr_list_changed (GObject *object, GParamSpec *pspec, gpointer data) { GtkEntry *entry = GTK_ENTRY (data); GValue val = G_VALUE_INIT; - char *str; + char *str = NULL; const char *text; PangoAttrList *attrs; @@ -413,7 +413,8 @@ attr_list_changed (GObject *object, GParamSpec *pspec, gpointer data) get_property_value (object, pspec, &val); attrs = g_value_get_boxed (&val); - str = pango_attr_list_to_string (attrs); + if (attrs) + str = pango_attr_list_to_string (attrs); if (str == NULL) str = g_strdup (""); text = gtk_editable_get_text (GTK_EDITABLE (entry)); From 5d979cde825fcad97214d230b69c9f6f87825b62 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 3 Apr 2022 15:53:52 -0400 Subject: [PATCH 2/2] inspector: Avoid another crash We need to handle all event types here. This was tripping over GDK_TOUCHPAD_HOLD events. --- gtk/inspector/recorder.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gtk/inspector/recorder.c b/gtk/inspector/recorder.c index 48ff6105b7..a237509a80 100644 --- a/gtk/inspector/recorder.c +++ b/gtk/inspector/recorder.c @@ -1807,7 +1807,7 @@ static char * get_event_summary (GdkEvent *event) { double x, y; - int type; + GdkEventType type; const char *name; gdk_event_get_position (event, &x, &y); @@ -1829,6 +1829,7 @@ get_event_summary (GdkEvent *event) case GDK_TOUCH_CANCEL: case GDK_TOUCHPAD_SWIPE: case GDK_TOUCHPAD_PINCH: + case GDK_TOUCHPAD_HOLD: case GDK_BUTTON_PRESS: case GDK_BUTTON_RELEASE: return g_strdup_printf ("%s (%.2f %.2f)", name, x, y); @@ -1854,6 +1855,7 @@ get_event_summary (GdkEvent *event) case GDK_PAD_RING: case GDK_PAD_STRIP: case GDK_PAD_GROUP_MODE: + case GDK_DELETE: return g_strdup_printf ("%s", name); case GDK_SCROLL: @@ -1868,6 +1870,7 @@ get_event_summary (GdkEvent *event) } break; + case GDK_EVENT_LAST: default: g_assert_not_reached (); }