From ca102487404eef1d14a33252fb989d1e89c43ffe Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 25 Nov 2020 23:50:25 +0000 Subject: [PATCH] Add `__dynamic_map_fix_keys` --- core/runtime/dynamic_map_internal.odin | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/core/runtime/dynamic_map_internal.odin b/core/runtime/dynamic_map_internal.odin index d9713dd67..5795ddcb6 100644 --- a/core/runtime/dynamic_map_internal.odin +++ b/core/runtime/dynamic_map_internal.odin @@ -141,8 +141,17 @@ __slice_resize :: proc(array_: ^$T/[]$E, new_count: int, allocator: Allocator, l return true; } +__dynamic_map_fix_keys :: proc(h: Map_Header) { + e := (^Map_Entry_Header)(m.entries.data); + for i in 0.. Map_Find_Resu __dynamic_map_add_entry :: proc(using h: Map_Header, hash: Map_Hash, loc := #caller_location) -> int { prev := m.entries.len; + prev_data := m.entries.data; c := __dynamic_array_append_nothing(&m.entries, entry_size, entry_align, loc); + if m.entries.data != prev_data { + __dynamic_map_fix_keys(h); + } if c != prev { end := __dynamic_map_get_entry(h, c-1); end.hash.hash = hash.hash;