From c96cae340659dab0e61d668e02a20b66434dc4d0 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Thu, 3 Jun 2021 19:59:04 -0500 Subject: [PATCH] small bugfix and made enabling debugging in heap.onyx compile time --- bin/onyx | Bin 371240 -> 371240 bytes core/alloc/heap.onyx | 15 +++++++++------ src/onyxchecker.c | 2 +- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/bin/onyx b/bin/onyx index 95c265679c6417987aa01d618439a42b38332d29..934d7e560aa0fbce51d72f68cae8e3e04a1f76a9 100755 GIT binary patch delta 53957 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≶Rl%5sfXbWK!C_$UQ6S067$i| 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 diff --git a/core/alloc/heap.onyx b/core/alloc/heap.onyx index 7861f070..e76ad66b 100644 --- a/core/alloc/heap.onyx +++ b/core/alloc/heap.onyx @@ -1,6 +1,9 @@ package core.alloc.heap -enable_debug := false +// Enable this to enable checking for invalid blocks and other corruptions +// that may happen on the heap, with the added overhead of checking that +// on every alloc/resize/free. +Enable_Debug :: false // This is the implementation for the general purpose heap allocator. // It is a simple bump allocator, with a free list. It is not very good @@ -62,7 +65,7 @@ heap_alloc :: (size_: u32, align: u32) -> rawptr { hb := heap_state.free_list; while hb != null { if hb.size >= size { - if enable_debug { + #if Enable_Debug { assert(hb.size & Allocated_Flag == 0, "Allocated block in free list."); assert(hb.magic_number == Free_Block_Magic_Number, "Malformed free block in free list."); } @@ -125,15 +128,15 @@ heap_alloc :: (size_: u32, align: u32) -> rawptr { #private_file heap_free :: (ptr: rawptr) { - if enable_debug do assert(ptr != null, "Trying to free a null pointer."); + #if Enable_Debug do assert(ptr != null, "Trying to free a null pointer."); hb_ptr := cast(^heap_freed_block) (cast(uintptr) ptr - sizeof heap_allocated_block); - if enable_debug do assert(hb_ptr.size & Allocated_Flag == Allocated_Flag, "Corrupted heap on free. This could be due to a double free, or using memory past were you allocated it."); + #if Enable_Debug do assert(hb_ptr.size & Allocated_Flag == Allocated_Flag, "Corrupted heap on free. This could be due to a double free, or using memory past were you allocated it."); hb_ptr.size &= ~Allocated_Flag; orig_size := hb_ptr.size - sizeof heap_allocated_block; - if enable_debug do memory_fill(ptr, ~~0xcc, orig_size); + #if Enable_Debug do memory_fill(ptr, ~~0xcc, orig_size); // CLEANUP: This is not complete. This only checks if the block after the freed block is also free. // There are three other cases related to the block before this one that need to be handled for @@ -170,7 +173,7 @@ heap_resize :: (ptr: rawptr, new_size_: u32, align: u32) -> rawptr { new_size = ~~memory.align(cast(u64) new_size, ~~align); hb_ptr := cast(^heap_allocated_block) (cast(uintptr) ptr - sizeof heap_allocated_block); - if enable_debug do assert(hb_ptr.size & Allocated_Flag == Allocated_Flag, "Corrupted heap on resize."); + #if Enable_Debug do assert(hb_ptr.size & Allocated_Flag == Allocated_Flag, "Corrupted heap on resize."); hb_ptr.size &= ~Allocated_Flag; old_size := hb_ptr.size; diff --git a/src/onyxchecker.c b/src/onyxchecker.c index 4307a085..78efb99a 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -1692,7 +1692,7 @@ CheckStatus check_struct(AstStructType* s_node) { // NOTE: fills in the stcache type_build_from_ast(context.ast_alloc, (AstType *) s_node); - if (s_node->stcache == NULL) return Check_Yield_Macro; + if (s_node->stcache == NULL || !s_node->stcache_is_valid) return Check_Yield_Macro; bh_arr_each(StructMember *, smem, s_node->stcache->Struct.memarr) { if ((*smem)->type->kind == Type_Kind_Compound) { -- 2.25.1