From: Matthias Clasen Date: Wed, 10 Mar 2004 21:28:10 +0000 (+0000) Subject: Keep the cell_list in a consistent state while iterating over it, since X-Git-Url: http://pileus.org/git/?a=commitdiff_plain;h=ebd1f209e2f1d8b22c46daab6fc4a92d1b298cd3;p=~andy%2Fgtk Keep the cell_list in a consistent state while iterating over it, since Wed Mar 10 22:30:23 2004 Matthias Clasen * gtk/gtkcellview.c (gtk_cell_view_cell_layout_clear): Keep the cell_list in a consistent state while iterating over it, since clear_attributes() also iterates over it. (#136585, Morten Welinder) --- diff --git a/ChangeLog b/ChangeLog index 0d9a8a50e..1f9639a0a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Wed Mar 10 22:30:23 2004 Matthias Clasen + + * gtk/gtkcellview.c (gtk_cell_view_cell_layout_clear): Keep the + cell_list in a consistent state while iterating over it, since + clear_attributes() also iterates over it. (#136585, Morten Welinder) + 2004-03-10 Mark McLoughlin * gtk/gtkexpander.c: (gtk_expander_expose): don't propagate diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 0d9a8a50e..1f9639a0a 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,9 @@ +Wed Mar 10 22:30:23 2004 Matthias Clasen + + * gtk/gtkcellview.c (gtk_cell_view_cell_layout_clear): Keep the + cell_list in a consistent state while iterating over it, since + clear_attributes() also iterates over it. (#136585, Morten Welinder) + 2004-03-10 Mark McLoughlin * gtk/gtkexpander.c: (gtk_expander_expose): don't propagate diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 0d9a8a50e..1f9639a0a 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,9 @@ +Wed Mar 10 22:30:23 2004 Matthias Clasen + + * gtk/gtkcellview.c (gtk_cell_view_cell_layout_clear): Keep the + cell_list in a consistent state while iterating over it, since + clear_attributes() also iterates over it. (#136585, Morten Welinder) + 2004-03-10 Mark McLoughlin * gtk/gtkexpander.c: (gtk_expander_expose): don't propagate diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 0d9a8a50e..1f9639a0a 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,9 @@ +Wed Mar 10 22:30:23 2004 Matthias Clasen + + * gtk/gtkcellview.c (gtk_cell_view_cell_layout_clear): Keep the + cell_list in a consistent state while iterating over it, since + clear_attributes() also iterates over it. (#136585, Morten Welinder) + 2004-03-10 Mark McLoughlin * gtk/gtkexpander.c: (gtk_expander_expose): don't propagate diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 0d9a8a50e..1f9639a0a 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,9 @@ +Wed Mar 10 22:30:23 2004 Matthias Clasen + + * gtk/gtkcellview.c (gtk_cell_view_cell_layout_clear): Keep the + cell_list in a consistent state while iterating over it, since + clear_attributes() also iterates over it. (#136585, Morten Welinder) + 2004-03-10 Mark McLoughlin * gtk/gtkexpander.c: (gtk_expander_expose): don't propagate diff --git a/gtk/gtkcellview.c b/gtk/gtkcellview.c index 0d1d9e1f4..5f8465a80 100644 --- a/gtk/gtkcellview.c +++ b/gtk/gtkcellview.c @@ -636,17 +636,16 @@ gtk_cell_view_cell_layout_clear (GtkCellLayout *layout) g_return_if_fail (GTK_IS_CELL_VIEW (cellview)); - for (i = cellview->priv->cell_list; i; i = i->next) + while (cellview->priv->cell_list) { - GtkCellViewCellInfo *info = (GtkCellViewCellInfo *)i->data; + GtkCellViewCellInfo *info = (GtkCellViewCellInfo *)cellview->priv->cell_list->data; gtk_cell_view_cell_layout_clear_attributes (layout, info->cell); g_object_unref (G_OBJECT (info->cell)); g_free (info); + cellview->priv->cell_list = g_list_delete_link (cellview->priv->cell_list, + cellview->priv->cell_list); } - - g_list_free (cellview->priv->cell_list); - cellview->priv->cell_list = NULL; } static void