summaryrefslogtreecommitdiff
path: root/pkbktarr.h
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-09-09 15:45:56 -0400
committerJonathan Bradley <jcb@pikum.xyz>2025-09-09 15:45:56 -0400
commit848247d0aedc1ed971b5ee20920cbc32f7e62ecb (patch)
treed956b319fa3c004f112dfdc14c33098da36a12db /pkbktarr.h
parent69fe8825407835b595537a17bf6c66dfc18b7b63 (diff)
pkbktarr: find first valid iter key on _begin
Diffstat (limited to 'pkbktarr.h')
-rw-r--r--pkbktarr.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/pkbktarr.h b/pkbktarr.h
index a833f87..a437e79 100644
--- a/pkbktarr.h
+++ b/pkbktarr.h
@@ -339,8 +339,11 @@ bool pk_bkt_arr_iter_begin(struct pk_bkt_arr *arr, struct pk_iter *it) {
it->data = nullptr;
it->id.bkt.b = 0;
it->id.bkt.i = 0;
+ if (arr->head_l.b == 0 && arr->head_l.i == 0 && (arr->head_l.b != arr->head_r.b || arr->head_l.i != arr->head_r.i)) {
+ return pk_bkt_arr_iter_increment(arr, it);
+ }
if ((arr->idx_unused[it->id.bkt.b] & (1ull << it->id.bkt.i)) != 0) return false;
- it->data = arr->bucketed_data[0];
+ it->data = (char*)(arr->bucketed_data[it->id.bkt.b]) + (arr->stride * it->id.bkt.i);
return true;
}