From 57fc2b58f362a361188856ed73dbb7391df66938 Mon Sep 17 00:00:00 2001 From: Aleksa Vuckovic Date: Sun, 4 Dec 2022 20:12:57 +0100 Subject: kheap_free bug fixed --- kernel/src/mem/heap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'kernel/src/mem') diff --git a/kernel/src/mem/heap.c b/kernel/src/mem/heap.c index 539328c..b49eefb 100644 --- a/kernel/src/mem/heap.c +++ b/kernel/src/mem/heap.c @@ -100,11 +100,11 @@ void kheap_free(kheap_t* kheap, void* pointer) { kheapblock_t* kheapblock; for (kheapblock = kheap->fblock; kheapblock; kheapblock = kheapblock->next) { - if ((uintptr_t)(pointer) > (uintptr_t)kheapblock && (uintptr_t)kheapblock + sizeof(kheapblock_t) + kheapblock->size) { + if ((uintptr_t)(pointer) > (uintptr_t)kheapblock && (uintptr_t)(pointer) < (uintptr_t)kheapblock + sizeof(kheapblock_t) + kheapblock->size) { // found block // get index of bitmap entry - uintptr_t pointer_offset = (uintptr_t)pointer - (uintptr_t)&kheapblock[1]; + uintptr_t pointer_offset = (uintptr_t)pointer - (uintptr_t)&kheapblock[0]; uint32_t bi = (uint32_t)pointer_offset / kheapblock->bsize; uint8_t* bm = (uint8_t*)&kheapblock[1]; uint8_t id = bm[bi]; -- cgit v1.2.3