summaryrefslogtreecommitdiff
path: root/gtk/gtkcellview.c
diff options
context:
space:
mode:
authorMatthias Clasen <maclas@gmx.de>2004-03-10 21:28:10 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2004-03-10 21:28:10 +0000
commitebd1f209e2f1d8b22c46daab6fc4a92d1b298cd3 (patch)
treedbbd16368b7856cd5f640cd209ecb70caaa655c7 /gtk/gtkcellview.c
parentbd722591f1a2ecb13294814a0dff42b24635c3e0 (diff)
downloadgtk+-ebd1f209e2f1d8b22c46daab6fc4a92d1b298cd3.tar.gz
Keep the cell_list in a consistent state while iterating over it, since
Wed Mar 10 22:30:23 2004 Matthias Clasen <maclas@gmx.de> * 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)
Diffstat (limited to 'gtk/gtkcellview.c')
-rw-r--r--gtk/gtkcellview.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/gtk/gtkcellview.c b/gtk/gtkcellview.c
index 0d1d9e1f47..5f8465a803 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