summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-08-27 15:09:08 -0400
committerJonathan Bradley <jcb@pikum.xyz>2025-08-27 15:09:08 -0400
commitc1c58188cbc1156f2b37d585fa7e7603b3d3acf4 (patch)
tree9be67d09362b9c350c19a8a12153308844b7df81
parent78e8d5f30e2d5c2cea4f64ed6f77f88a4e2a9583 (diff)
pkbktarr: ensure valid iter increment
-rw-r--r--pkbktarr.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/pkbktarr.h b/pkbktarr.h
index e4e8daa..87e71ad 100644
--- a/pkbktarr.h
+++ b/pkbktarr.h
@@ -380,11 +380,11 @@ bool pk_bkt_arr_iter_increment(struct pk_bkt_arr *arr, struct pk_iter *it) {
if (it->id.bkt.b == arr->limits.b-1 && it->id.bkt.i == arr->limits.i-1) return false;
for (;;) {
handle = pk_bkt_arr_handle_increment(arr, handle);
+ if (handle.b >= arr->reserved_buckets) return false;
if ((arr->idx_unused[handle.b] & (1ull << handle.i)) == 0) break;
}
it->id.bkt.b = handle.b;
it->id.bkt.i = handle.i;
- if (handle.b >= arr->reserved_buckets) return false;
if ((arr->idx_unused[it->id.bkt.b] & (1ull << it->id.bkt.i)) != 0) return false;
it->data = (char*)(arr->bucketed_data[it->id.bkt.b]) + (arr->stride * it->id.bkt.i);
return true;