diff --git a/base/runtime/core_builtin.odin b/base/runtime/core_builtin.odin index 8b7a5004a..d28dadd02 100644 --- a/base/runtime/core_builtin.odin +++ b/base/runtime/core_builtin.odin @@ -388,7 +388,7 @@ _make_dynamic_array_len_cap :: proc(array: ^Raw_Dynamic_Array, size_of_elem, ali // // Note: Prefer using the procedure group `make`. @(builtin, require_results) -make_map :: proc($T: typeid/map[$K]$E, allocator := context.allocator) -> (m: T) { +make_map :: proc($T: typeid/map[$K]$E, allocator := context.allocator, loc := #caller_location) -> (m: T) { m.allocator = allocator return m } @@ -399,7 +399,7 @@ make_map :: proc($T: typeid/map[$K]$E, allocator := context.allocator) -> (m: T) // // Note: Prefer using the procedure group `make`. @(builtin, require_results) -make_map_cap :: proc($T: typeid/map[$K]$E, #any_int capacity: int = 1< (m: T, err: Allocator_Error) #optional_allocator_error { +make_map_cap :: proc($T: typeid/map[$K]$E, #any_int capacity: int, allocator := context.allocator, loc := #caller_location) -> (m: T, err: Allocator_Error) #optional_allocator_error { make_map_expr_error_loc(loc, capacity) context.allocator = allocator diff --git a/tests/core/runtime/test_core_runtime.odin b/tests/core/runtime/test_core_runtime.odin index f39caff48..84fd044cf 100644 --- a/tests/core/runtime/test_core_runtime.odin +++ b/tests/core/runtime/test_core_runtime.odin @@ -39,4 +39,28 @@ test_temp_allocator_returns_correct_size :: proc(t: ^testing.T) { bytes, err := mem.alloc_bytes(10, 16) testing.expect(t, err == nil) testing.expect(t, len(bytes) == 10) +} + +@(test) +test_init_cap_map_dynarray :: proc(t: ^testing.T) { + m1 := make(map[int]string) + defer delete(m1) + testing.expect(t, cap(m1) == 0) + testing.expect(t, m1.allocator.procedure == context.allocator.procedure) + + ally := context.temp_allocator + m2 := make(map[int]string, ally) + defer delete(m2) + testing.expect(t, cap(m2) == 0) + testing.expect(t, m2.allocator.procedure == ally.procedure) + + d1 := make([dynamic]string) + defer delete(d1) + testing.expect(t, cap(d1) == 0) + testing.expect(t, d1.allocator.procedure == context.allocator.procedure) + + d2 := make([dynamic]string, ally) + defer delete(d2) + testing.expect(t, cap(d2) == 0) + testing.expect(t, d2.allocator.procedure == ally.procedure) } \ No newline at end of file