From d96d058034e98bf6d164f34840f8d8403ad26e04 Mon Sep 17 00:00:00 2001 From: Aiden Lambert Date: Fri, 5 Dec 2025 03:49:21 -0500 Subject: [PATCH] fix: use memset in bitset_set and bitset_clear --- buddy_alloc.h | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/buddy_alloc.h b/buddy_alloc.h index 4c2a3f2..4fa2ea0 100644 --- a/buddy_alloc.h +++ b/buddy_alloc.h @@ -2066,8 +2066,11 @@ static void bitset_set_range(unsigned char *bitset, struct bitset_range range) { } else { bitset[range.from_bucket] |= bitset_char_mask[range.from_index][7]; bitset[range.to_bucket] |= bitset_char_mask[0][range.to_index]; - while(++range.from_bucket != range.to_bucket) { - bitset[range.from_bucket] = 255u; + + range.from_bucket++; + + if (range.to_bucket - range.from_bucket) { + memset(bitset + range.from_bucket, 255u, range.to_bucket - range.from_bucket); } } } @@ -2079,8 +2082,11 @@ static void bitset_clear_range(unsigned char* bitset, struct bitset_range range) else { bitset[range.from_bucket] &= ~bitset_char_mask[range.from_index][7]; bitset[range.to_bucket] &= ~bitset_char_mask[0][range.to_index]; - while (++range.from_bucket != range.to_bucket) { - bitset[range.from_bucket] = 0; + + range.from_bucket++; + + if (range.to_bucket - range.from_bucket) { + memset(bitset + range.from_bucket, 0, range.to_bucket - range.from_bucket); } } }