From e2c3415ff14da30ad696f46e0dfec8289ec9db29 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Luk=C3=A1=C5=A1=20Ondr=C3=A1=C4=8Dek?= Date: Mon, 22 Jun 2026 17:45:00 +0200 Subject: [PATCH] lib/generic/array: round sizes to those used by jemalloc --- lib/generic/array.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/generic/array.h b/lib/generic/array.h index 39caed2a4..dd684ae5a 100644 --- a/lib/generic/array.h +++ b/lib/generic/array.h @@ -57,8 +57,9 @@ static inline size_t array_next_count(size_t elm_size, size_t want, size_t have) { // round size to power of two - const size_t want_b = MAX(want, 4) * elm_size; - const size_t next_b = 1 << (8 * sizeof(unsigned int) - __builtin_clz(want_b - 1)); + const size_t want_b = MAX(want * elm_size, 32); + const size_t msb_index = 8 * sizeof(unsigned int) - __builtin_clz(want_b - 1); + const size_t next_b = (((want_b - 1) >> (msb_index - 3)) + 1) << (msb_index - 3); return next_b / elm_size; } -- 2.47.3