[gtk] widget: Properly remove event controllers in finalize
- From: Timm Bäder <baedert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk] widget: Properly remove event controllers in finalize
- Date: Sat, 19 May 2018 21:06:45 +0000 (UTC)
commit 3edd24fb0152789fc383568a14b38792a2c9b535
Author: Timm Bäder <mail baedert org>
Date: Sat May 19 23:03:32 2018 +0200
widget: Properly remove event controllers in finalize
We were mutating the list while iterating over it. This was not a
problem before since remove_controller just set the controller pointer
to NULL instead of actually removing it from the list of controllers.
gtk/gtkwidget.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
---
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 4727e37b4d..96c7145aa6 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -8572,15 +8572,18 @@ gtk_widget_finalize (GObject *object)
_gtk_size_request_cache_free (&priv->requests);
- for (l = priv->event_controllers; l; l = l->next)
+ l = priv->event_controllers;
+ while (l)
{
+ GList *next = l->next;
GtkEventController *controller = l->data;
if (controller)
gtk_widget_remove_controller (widget, controller);
+
+ l = next;
}
- g_list_free (priv->event_controllers);
- priv->event_controllers = NULL;
+ g_assert (priv->event_controllers == NULL);
if (_gtk_widget_get_first_child (widget) != NULL)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]