summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2020-08-13 17:25:56 +0200
committerDavid Robillard <d@drobilla.net>2020-08-13 17:25:56 +0200
commitea0fd7ddc5086a553e7a94b16b46700af476f3dd (patch)
tree68f79a1c067b7a17dd5607e07f517cfd45851793
parent59d5056a65062ff2b46bcf477651e71f5d4984e0 (diff)
downloadzix-ea0fd7ddc5086a553e7a94b16b46700af476f3dd.tar.gz
zix-ea0fd7ddc5086a553e7a94b16b46700af476f3dd.tar.bz2
zix-ea0fd7ddc5086a553e7a94b16b46700af476f3dd.zip
Always reset level of end iterators
-rw-r--r--zix/btree.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/zix/btree.c b/zix/btree.c
index 55d6613..0300523 100644
--- a/zix/btree.c
+++ b/zix/btree.c
@@ -537,7 +537,8 @@ zix_btree_remove(ZixBTree* const t,
*out = zix_btree_aerase(n->vals, --n->n_vals, i);
if (ti && i == n->n_vals) {
if (i == 0) {
- ti->stack[ti->level = 0].node = NULL;
+ ti->level = 0;
+ ti->stack[0].node = NULL;
} else {
--ti->stack[ti->level].index;
zix_btree_iter_increment(ti);
@@ -697,6 +698,7 @@ zix_btree_lower_bound(const ZixBTree* const t,
(*ti)->level = found_level;
} else {
// Reached end (key is greater than everything in tree)
+ (*ti)->level = 0;
(*ti)->stack[0].node = NULL;
}
}
@@ -720,6 +722,7 @@ zix_btree_begin(const ZixBTree* const t)
if (!i) {
return NULL;
} else if (t->size == 0) {
+ i->level = 0;
i->stack[0].node = NULL;
} else {
ZixBTreeNode* n = t->root;