diff --git a/core/mem/virtual/arena.odin b/core/mem/virtual/arena.odin index 3a6fe51b2..58c71c318 100644 --- a/core/mem/virtual/arena.odin +++ b/core/mem/virtual/arena.odin @@ -70,12 +70,18 @@ arena_alloc :: proc(arena: ^Arena, min_size: int, alignment: int) -> (data: []by } arena_free_all :: proc(arena: ^Arena) { + if !arena.ignore_mutex { + sync.mutex_lock(mutex) + } for arena.curr_block != nil { free_block := arena.curr_block arena.curr_block = free_block.prev memory_dealloc(free_block) } arena.total_used = 0 + if !arena.ignore_mutex { + sync.mutex_unlock(mutex) + } } arena_allocator :: proc(arena: ^Arena) -> mem.Allocator {