X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/agedu/blobdiff_plain/cc7db507cc53258e23c148c690c9e450214f93ac..14601b5d4222f2bee568e03eddf2f949b2a9d126:/index.c diff --git a/index.c b/index.c index 19cde65..3431d98 100644 --- a/index.c +++ b/index.c @@ -258,7 +258,13 @@ void indexbuild_add(indexbuild *ib, const struct trie_file *tf) { off_t node = OFFSET(ib->t, tf); ib->currroot = avl_insert(ib, ib->currroot, node); - ib->roots[ib->n++] = OFFSET(ib->t, ib->currroot); + ib->roots[ib->n++] = 0; +} + +void indexbuild_tag(indexbuild *ib) +{ + if (ib->n > 0) + ib->roots[ib->n - 1] = OFFSET(ib->t, ib->currroot); ib->firstmutable = ib->nodes + ib->nnodes; } @@ -269,6 +275,7 @@ off_t indexbuild_realsize(indexbuild *ib) void indexbuild_free(indexbuild *ib) { + assert(ib->n == trie_count(ib->t)); sfree(ib); } @@ -287,6 +294,7 @@ unsigned long long index_query(const void *t, int n, unsigned long long at) if (n > count) n = count; + assert(roots[n-1]); node = NODE(t, roots[n-1]); ret = 0; @@ -318,6 +326,7 @@ unsigned long long index_order_stat(const void *t, double f) roots = (const off_t *)((const char *)t + trie_get_index_offset(t)); count = trie_count(t); + assert(roots[count-1]); node = NODE(t, roots[count-1]); size = node->totalsize * f;