]> Pileus Git - ~andy/gtk/commitdiff
gtktreemodelfilter: fix small bug in prune level
authorKristian Rietveld <kris@gtk.org>
Sun, 11 Sep 2011 10:02:12 +0000 (12:02 +0200)
committerKristian Rietveld <kris@gtk.org>
Sun, 11 Sep 2011 10:13:54 +0000 (12:13 +0200)
gtk_tree_model_filter_prune_level() should drop all internal reference
counts as well for nodes which are going to be removed from the
sequence.

gtk/gtktreemodelfilter.c

index a8795fb8ddaeb5f61a3b237d68b77de4b474ef66..d88702c2988cc6eb7d2f39042a1d62124c9267ff 100644 (file)
@@ -1088,6 +1088,12 @@ gtk_tree_model_filter_prune_level (GtkTreeModelFilter *filter,
       while (elt->ext_ref_count > 0)
         gtk_tree_model_filter_real_unref_node (GTK_TREE_MODEL (filter),
                                                &f_iter, TRUE, TRUE);
+      /* In this case, we do remove reference counts we've added ourselves,
+       * since the node will be removed from the data structures.
+       */
+      while (elt->ref_count > 0)
+        gtk_tree_model_filter_real_unref_node (GTK_TREE_MODEL (filter),
+                                               &f_iter, FALSE, TRUE);
 
       if (elt->visible_siter)
         {