From: Carlos Garnacho Date: Mon, 16 Mar 2015 12:45:03 +0000 (+0100) Subject: widget: Take a ref during ::unmap emission X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2~24^2~10172 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=f5f6ad99819117d18b51e5db047437be24267fe0;p=gtk4.git 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 --- 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); } }