summaryrefslogtreecommitdiff
path: root/pkbktarr.h
diff options
context:
space:
mode:
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;
}