From 38dc73faee33c33d1348101e8a546efdb694e4f1 Mon Sep 17 00:00:00 2001 From: Kristian Rietveld Date: Wed, 27 Sep 2006 14:16:47 +0000 Subject: [PATCH] bring zero ref count loops in sync with each other and the sort model. 2006-09-26 Kristian Rietveld * gtk/gtktreemodelfilter.c (gtk_tree_model_filter_free_level), (gtk_tree_model_filter_ref_node), (gtk_tree_model_filter_real_unref_node): bring zero ref count loops in sync with each other and the sort model. --- ChangeLog | 7 +++++++ gtk/gtktreemodelfilter.c | 35 +++++++++++++++-------------------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0a382d1a90..c21daea42d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-09-26 Kristian Rietveld + + * gtk/gtktreemodelfilter.c (gtk_tree_model_filter_free_level), + (gtk_tree_model_filter_ref_node), + (gtk_tree_model_filter_real_unref_node): bring zero ref count loops + in sync with each other and the sort model. + 2006-09-26 Kristian Rietveld * gtk/gtktreemodelfilter.c (gtk_tree_model_filter_init), diff --git a/gtk/gtktreemodelfilter.c b/gtk/gtktreemodelfilter.c index 5a463a9b40..74d1e9c43c 100644 --- a/gtk/gtktreemodelfilter.c +++ b/gtk/gtktreemodelfilter.c @@ -629,18 +629,14 @@ gtk_tree_model_filter_free_level (GtkTreeModelFilter *filter, FilterLevel *parent_level = filter_level->parent_level; FilterElt *parent_elt = filter_level->parent_elt; - do + while (parent_level) { - if (parent_elt) - parent_elt->zero_ref_count--; + parent_elt->zero_ref_count--; - if (parent_level) - { - parent_elt = parent_level->parent_elt; - parent_level = parent_level->parent_level; - } + parent_elt = parent_level->parent_elt; + parent_level = parent_level->parent_level; } - while (parent_level); + if (filter_level != filter->priv->root) filter->priv->zero_ref_count--; } @@ -2574,19 +2570,16 @@ gtk_tree_model_filter_ref_node (GtkTreeModel *model, FilterElt *parent_elt = level->parent_elt; /* we were at zero -- time to decrease the zero_ref_count val */ - do + while (parent_level) { - if (parent_elt) - parent_elt->zero_ref_count--; + parent_elt->zero_ref_count--; - if (parent_level) - { - parent_elt = parent_level->parent_elt; - parent_level = parent_level->parent_level; - } + parent_elt = parent_level->parent_elt; + parent_level = parent_level->parent_level; } - while (parent_level); - filter->priv->zero_ref_count--; + + if (filter->priv->root != level) + filter->priv->zero_ref_count--; } } @@ -2637,7 +2630,9 @@ gtk_tree_model_filter_real_unref_node (GtkTreeModel *model, parent_elt = parent_level->parent_elt; parent_level = parent_level->parent_level; } - filter->priv->zero_ref_count++; + + if (filter->priv->root != level) + filter->priv->zero_ref_count++; } }