diff --git a/core/mem/alloc.odin b/core/mem/alloc.odin index 00bfd904f..0814085f9 100644 --- a/core/mem/alloc.odin +++ b/core/mem/alloc.odin @@ -53,16 +53,16 @@ delete_string :: proc(str: string, allocator := context.allocator, loc := #calle delete_cstring :: proc(str: cstring, allocator := context.allocator, loc := #caller_location) { free((^byte)(str), allocator, loc); } -delete_dynamic_array :: proc(array: $T/[dynamic]$E, allocator := context.allocator, loc := #caller_location) { - free(raw_data(array), allocator, loc); +delete_dynamic_array :: proc(array: $T/[dynamic]$E, loc := #caller_location) { + free(raw_data(array), array.allocator, loc); } delete_slice :: proc(array: $T/[]$E, allocator := context.allocator, loc := #caller_location) { free(raw_data(array), allocator, loc); } -delete_map :: proc(m: $T/map[$K]$V, allocator := context.allocator, loc := #caller_location) { +delete_map :: proc(m: $T/map[$K]$V, loc := #caller_location) { raw := transmute(Raw_Map)m; - delete_dynamic_array(raw.hashes, allocator, loc); - free(raw.entries.data, allocator, loc); + delete_dynamic_array(raw.hashes, loc); + free(raw.entries.data, raw.entries.allocator, loc); }