summaryrefslogtreecommitdiff
path: root/gtk/gtktreestore.c
diff options
context:
space:
mode:
authorKristian Rietveld <kris@gtk.org>2009-07-30 21:23:47 +0200
committerKristian Rietveld <kris@gtk.org>2009-07-30 21:23:47 +0200
commitd743b2fbeab01f9a9904712a5b751afd0519696d (patch)
tree40898f95eed2843d04e6abee707a7841b0317251 /gtk/gtktreestore.c
parenta79ef0866bb14a31ad789c4a8750f66ec1d7ad64 (diff)
downloadgtk+-d743b2fbeab01f9a9904712a5b751afd0519696d.tar.gz
Bug 586374 – code does not follow documentation
Properly invalidate iterators in iter_next, iter_children, iter_nth_child and iter_parent when FALSE is returned. ListStore was actually already mostly in order as the GSequence pointers are very strictly checked, but to be a little stricter we've added stamp = 0 lines. TreeStore did not invalidate its iterators, so stamp = 0 lines were added where appropriate. Unit tests have been added to check this. Fixes bug 586374, reported by Mike Gemunde.
Diffstat (limited to 'gtk/gtktreestore.c')
-rw-r--r--gtk/gtktreestore.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/gtk/gtktreestore.c b/gtk/gtktreestore.c
index 1fb178d375..97084084fb 100644
--- a/gtk/gtktreestore.c
+++ b/gtk/gtktreestore.c
@@ -620,7 +620,10 @@ gtk_tree_store_iter_next (GtkTreeModel *tree_model,
return TRUE;
}
else
- return FALSE;
+ {
+ iter->stamp = 0;
+ return FALSE;
+ }
}
static gboolean
@@ -646,7 +649,10 @@ gtk_tree_store_iter_children (GtkTreeModel *tree_model,
return TRUE;
}
else
- return FALSE;
+ {
+ iter->stamp = 0;
+ return FALSE;
+ }
}
static gboolean
@@ -708,7 +714,10 @@ gtk_tree_store_iter_nth_child (GtkTreeModel *tree_model,
return TRUE;
}
else
- return FALSE;
+ {
+ iter->stamp = 0;
+ return FALSE;
+ }
}
static gboolean
@@ -733,7 +742,10 @@ gtk_tree_store_iter_parent (GtkTreeModel *tree_model,
return TRUE;
}
else
- return FALSE;
+ {
+ iter->stamp = 0;
+ return FALSE;
+ }
}