diff options
author | Matthias Clasen <maclas@gmx.de> | 2004-03-10 21:28:10 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2004-03-10 21:28:10 +0000 |
commit | ebd1f209e2f1d8b22c46daab6fc4a92d1b298cd3 (patch) | |
tree | dbbd16368b7856cd5f640cd209ecb70caaa655c7 /gtk/gtkcellview.c | |
parent | bd722591f1a2ecb13294814a0dff42b24635c3e0 (diff) | |
download | gtk+-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.c | 9 |
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 |