From f5f6ad99819117d18b51e5db047437be24267fe0 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Mon, 16 Mar 2015 13:45:03 +0100 Subject: [PATCH] widget: Take a ref during ::unmap emission This ensures the widget data stays live long enough to perform invariants check after emission if the widget happens to be destroyed on a callback. https://bugzilla.gnome.org/show_bug.cgi?id=745829 --- gtk/gtkwidget.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 0e9ed82750..043fac48bf 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -5081,6 +5081,7 @@ gtk_widget_unmap (GtkWidget *widget) if (gtk_widget_get_mapped (widget)) { + g_object_ref (widget); gtk_widget_push_verify_invariants (widget); if (!gtk_widget_get_has_window (widget)) @@ -5093,6 +5094,7 @@ gtk_widget_unmap (GtkWidget *widget) g_signal_emit (widget, widget_signals[UNMAP], 0); gtk_widget_pop_verify_invariants (widget); + g_object_unref (widget); } }