summaryrefslogtreecommitdiff
path: root/gtk/gtktreemodelfilter.c
diff options
context:
space:
mode:
authorKristian Rietveld <kris@gtk.org>2011-09-11 12:02:12 +0200
committerKristian Rietveld <kris@gtk.org>2011-09-11 12:13:54 +0200
commita43f2ba01030bd603c3e2dc4cf1bb257ab1a6bf5 (patch)
tree03461266c1f004345ebdb857640effaed4d3a277 /gtk/gtktreemodelfilter.c
parent9ed76387fa2d91d7ac063ff1ce6d2cace84d7688 (diff)
downloadgtk+-a43f2ba01030bd603c3e2dc4cf1bb257ab1a6bf5.tar.gz
gtktreemodelfilter: fix small bug in prune level
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.
Diffstat (limited to 'gtk/gtktreemodelfilter.c')
-rw-r--r--gtk/gtktreemodelfilter.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gtk/gtktreemodelfilter.c b/gtk/gtktreemodelfilter.c
index a8795fb8dd..d88702c298 100644
--- a/gtk/gtktreemodelfilter.c
+++ b/gtk/gtktreemodelfilter.c
@@ -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)
{