From 5eaa8de8f94a8f5601ba0a4267f210ce5ae4ddc8 Mon Sep 17 00:00:00 2001 From: Ginger Bill Date: Thu, 12 Oct 2017 21:01:16 +0100 Subject: [PATCH] Fix issue with #118 --- core/mem.odin | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/core/mem.odin b/core/mem.odin index 2be976b2a..1c841a995 100644 --- a/core/mem.odin +++ b/core/mem.odin @@ -131,12 +131,15 @@ arena_allocator :: proc(arena: ^Arena) -> Allocator { }; } +import "core:fmt.odin"; + arena_allocator_proc :: proc(allocator_data: rawptr, mode: Allocator_Mode, size, alignment: int, old_memory: rawptr, old_size: int, flags: u64) -> rawptr { using Allocator_Mode; arena := cast(^Arena)allocator_data; + switch mode { case Alloc: total_size := size + alignment; @@ -148,7 +151,7 @@ arena_allocator_proc :: proc(allocator_data: rawptr, mode: Allocator_Mode, #no_bounds_check end := &arena.memory[len(arena.memory)]; ptr := align_forward(end, alignment); - (cast(^raw.Slice)&arena).len += total_size; + (^raw.Slice)(&arena.memory).len += total_size; return zero(ptr, size); case Free: @@ -156,7 +159,7 @@ arena_allocator_proc :: proc(allocator_data: rawptr, mode: Allocator_Mode, // Use ArenaTempMemory if you want to free a block case FreeAll: - (cast(^raw.Slice)&arena).len = 0; + (^raw.Slice)(&arena.memory).len = 0; case Resize: return default_resize_align(old_memory, old_size, size, alignment);