From 7798b2693e4e9b95da350fa5ce53d610dc5c8114 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Sun, 14 Oct 2018 18:49:48 -0400 Subject: [PATCH] fix loop exit condition boundary for get_free_slot --- malloc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/malloc.c b/malloc.c index 242ffd2..2920926 100644 --- a/malloc.c +++ b/malloc.c @@ -221,7 +221,7 @@ static size_t get_free_slot(struct random_state *rng, size_t slots, struct slab_ unsigned first_bitmap = random_index / 64; u64 random_split = ~(~0UL << (random_index - first_bitmap * 64)); - for (unsigned i = first_bitmap; i <= slots / 64; i++) { + for (unsigned i = first_bitmap; i <= (slots - 1) / 64; i++) { u64 masked = metadata->bitmap[i]; if (i == slots / 64) { masked |= get_mask(slots - i * 64); @@ -239,9 +239,9 @@ static size_t get_free_slot(struct random_state *rng, size_t slots, struct slab_ } } - for (unsigned i = 0; i <= slots / 64; i++) { + for (unsigned i = 0; i <= (slots - 1) / 64; i++) { u64 masked = metadata->bitmap[i]; - if (i == slots / 64) { + if (i == (slots - 1) / 64) { masked |= get_mask(slots - i * 64); }