diff options
author | Kristian Rietveld <kris@gtk.org> | 2009-07-30 21:23:47 +0200 |
---|---|---|
committer | Kristian Rietveld <kris@gtk.org> | 2009-07-30 21:23:47 +0200 |
commit | d743b2fbeab01f9a9904712a5b751afd0519696d (patch) | |
tree | 40898f95eed2843d04e6abee707a7841b0317251 /gtk/gtktreestore.c | |
parent | a79ef0866bb14a31ad789c4a8750f66ec1d7ad64 (diff) | |
download | gtk+-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.c | 20 |
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; + } } |