From 868c923770e4655818c1e0a4bea59a647823be97 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 25 Sep 2021 15:55:27 +0100 Subject: [PATCH] Make `map` internals more robust when using `mem.nil_allocator()` --- core/runtime/dynamic_map_internal.odin | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/runtime/dynamic_map_internal.odin b/core/runtime/dynamic_map_internal.odin index 36265c03e..b6545b53e 100644 --- a/core/runtime/dynamic_map_internal.odin +++ b/core/runtime/dynamic_map_internal.odin @@ -210,7 +210,7 @@ __dynamic_map_rehash :: proc(using header: Map_Header, new_count: int, loc := #c new_count = max(new_count, 2*m.entries.len) __slice_resize(&nm.hashes, new_count, m.entries.allocator, loc) - for i in 0 ..< new_count { + for _, i in nm.hashes { nm.hashes[i] = -1 } @@ -271,8 +271,10 @@ __dynamic_map_set :: proc(h: Map_Header, hash: Map_Hash, value: rawptr, loc := # if fr.entry_prev >= 0 { entry := __dynamic_map_get_entry(h, fr.entry_prev) entry.next = index - } else { + } else if fr.hash_index >= 0 { h.m.hashes[fr.hash_index] = index + } else { + return nil } }