From f0940c962fe3df73cd15bd0d9de92e85158e37d5 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Tue, 6 May 2014 15:25:31 +0200 Subject: [PATCH] widget: Keep a widget reference around _gtk_widget_run_controllers() The widget may be destroyed within the loop, in reaction to the signals sent by the controllers. Protect against that. --- gtk/gtkwidget.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 8e8d66325d..6d9c17f7a5 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -7210,6 +7210,7 @@ _gtk_widget_get_controllers_evmask (GtkWidget *widget) GList *l; priv = widget->priv; + g_object_ref (widget); for (l = priv->event_controllers; l; l = l->next) { @@ -7240,6 +7241,8 @@ _gtk_widget_run_controllers (GtkWidget *widget, handled |= gtk_event_controller_handle_event (data->controller, event); } + g_object_unref (widget); + return handled; }