[gtk+/gestures: 134/140] widget: Keep a widget reference around _gtk_widget_run_controllers()



commit 08f84292f105073eaa06105f4f3b60e1c3d094ca
Author: Carlos Garnacho <carlosg gnome org>
Date:   Tue May 6 15:25:31 2014 +0200

    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 files changed, 3 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 554fab2..6fab8bf 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -7199,6 +7199,7 @@ _gtk_widget_run_controllers (GtkWidget           *widget,
   GList *l;
 
   priv = widget->priv;
+  g_object_ref (widget);
 
   for (l = priv->event_controllers; l; l = l->next)
     {
@@ -7208,6 +7209,8 @@ _gtk_widget_run_controllers (GtkWidget           *widget,
         handled |= gtk_event_controller_handle_event (data->controller, event);
     }
 
+  g_object_unref (widget);
+
   return handled;
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]