]> Pileus Git - ~andy/gtk/commitdiff
bring zero ref count loops in sync with each other and the sort model.
authorKristian Rietveld <kris@imendio.com>
Wed, 27 Sep 2006 14:16:47 +0000 (14:16 +0000)
committerKristian Rietveld <kristian@src.gnome.org>
Wed, 27 Sep 2006 14:16:47 +0000 (14:16 +0000)
2006-09-26  Kristian Rietveld  <kris@imendio.com>

* 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
gtk/gtktreemodelfilter.c

index 0a382d1a905d9155e90e6bb5d30e34c389139656..c21daea42df30a4754066d75c74f3ec7fbe40141 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2006-09-26  Kristian Rietveld  <kris@imendio.com>
+
+       * 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  <kris@imendio.com>
 
        * gtk/gtktreemodelfilter.c (gtk_tree_model_filter_init),
index 5a463a9b40e234529ecbdb208b013433ab5397eb..74d1e9c43ce70870f0f86db41bb5cf70f1b085a2 100644 (file)
@@ -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++;
     }
 }