From fe2370a5bad3602edfab028bf0fcd898b32b8556 Mon Sep 17 00:00:00 2001 From: Michael Catanzaro Date: Mon, 10 Feb 2020 17:14:18 -0600 Subject: [PATCH] window: prepare for window destruction after gtk_window_close() Epiphany is doing something weird after calling gtk_window_close(), because by the time the callback executes, the window has no GdkWindow. Frankly, I don't know what's happening there, but we should probably not crash. Fixes #2424 --- gtk/gtkwindow.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 7229518900..c8fb47668c 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -1315,17 +1315,23 @@ send_delete_event (gpointer data) { GtkWidget *window = data; GtkWindowPrivate *priv = GTK_WINDOW (window)->priv; + GdkWindow *gdk_window; - GdkEvent *event; - - event = gdk_event_new (GDK_DELETE); - - event->any.window = g_object_ref (_gtk_widget_get_window (window)); - event->any.send_event = TRUE; priv->delete_event_handler = 0; - gtk_main_do_event (event); - gdk_event_free (event); + gdk_window = _gtk_widget_get_window (window); + if (gdk_window) + { + GdkEvent *event; + + event = gdk_event_new (GDK_DELETE); + event->any.window = g_object_ref (gdk_window); + event->any.send_event = TRUE; + + gtk_main_do_event (event); + + gdk_event_free (event); + } return G_SOURCE_REMOVE; }