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_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)
{