[gtk+] Fix another GtkFixed regression, in gtk_fixed_forall()



commit 54c97f3ba2358c60fcc32404b67716e44384fb52
Author: Matthias Clasen <mclasen redhat com>
Date:   Wed Feb 2 00:40:02 2011 -0500

    Fix another GtkFixed regression, in gtk_fixed_forall()
    
    b3f6f67c changed the loop from while() to for() in gtk_fixed_forall(),
    but that's wrong since the callback can have side-effects on the list,
    in case the current child gets removed. And that's the case when the
    widget is destroyed.
    
    Patch by Vincent Untz
    https://bugzilla.gnome.org/show_bug.cgi?id=641196

 gtk/gtkfixed.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)
---
diff --git a/gtk/gtkfixed.c b/gtk/gtkfixed.c
index fd92cd7..e453005 100644
--- a/gtk/gtkfixed.c
+++ b/gtk/gtkfixed.c
@@ -540,9 +540,11 @@ gtk_fixed_forall (GtkContainer *container,
   GtkFixedChild *child;
   GList *children;
 
-  for (children = priv->children; children; children = children->next)
+  children = priv->children;
+  while (children)
     {
       child = children->data;
+      children = children->next;
 
       (* callback) (child->widget, callback_data);
     }



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