diff --git a/clutter/clutter-group.c b/clutter/clutter-group.c index a0ef32c05..059931634 100644 --- a/clutter/clutter-group.c +++ b/clutter/clutter-group.c @@ -277,10 +277,12 @@ clutter_group_real_foreach (ClutterContainer *container, { ClutterGroup *group = CLUTTER_GROUP (container); ClutterGroupPrivate *priv = group->priv; - GList *l; - for (l = priv->children; l; l = l->next) - (* callback) (CLUTTER_ACTOR (l->data), user_data); + /* Using g_list_foreach instead of iterating the list manually + because it has better protection against the current node being + removed. This will happen for example if someone calls + clutter_container_foreach(container, clutter_actor_destroy) */ + g_list_foreach (priv->children, (GFunc) callback, user_data); } static void