Browse Source

Add a mutex to `arena_free_all`

gingerBill 3 years ago
parent
commit
b2a36f204e
1 changed files with 6 additions and 0 deletions
  1. 6 0
      core/mem/virtual/arena.odin

+ 6 - 0
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) {
 arena_free_all :: proc(arena: ^Arena) {
+	if !arena.ignore_mutex {
+		sync.mutex_lock(mutex)
+	}
 	for arena.curr_block != nil {
 	for arena.curr_block != nil {
 		free_block := arena.curr_block
 		free_block := arena.curr_block
 		arena.curr_block = free_block.prev
 		arena.curr_block = free_block.prev
 		memory_dealloc(free_block)
 		memory_dealloc(free_block)
 	}
 	}
 	arena.total_used = 0
 	arena.total_used = 0
+	if !arena.ignore_mutex {
+		sync.mutex_unlock(mutex)
+	}
 }
 }
 
 
 arena_allocator :: proc(arena: ^Arena) -> mem.Allocator {
 arena_allocator :: proc(arena: ^Arena) -> mem.Allocator {