Browse Source

Clean up `__dynamic_map_rehash` behaviour

gingerBill 4 years ago
parent
commit
8591655334
1 changed files with 2 additions and 2 deletions
  1. 2 2
      core/runtime/dynamic_map_internal.odin

+ 2 - 2
core/runtime/dynamic_map_internal.odin

@@ -175,7 +175,6 @@ __dynamic_map_rehash :: proc(using header: Map_Header, new_count: int, loc := #c
 		}
 		}
 
 
 		entry_header := __dynamic_map_get_entry(header, i);
 		entry_header := __dynamic_map_get_entry(header, i);
-		data := uintptr(entry_header);
 
 
 		fr := __dynamic_map_find(new_header, entry_header.hash);
 		fr := __dynamic_map_find(new_header, entry_header.hash);
 		j := __dynamic_map_add_entry(new_header, entry_header.hash, loc);
 		j := __dynamic_map_add_entry(new_header, entry_header.hash, loc);
@@ -187,8 +186,9 @@ __dynamic_map_rehash :: proc(using header: Map_Header, new_count: int, loc := #c
 		}
 		}
 
 
 		e := __dynamic_map_get_entry(new_header, j);
 		e := __dynamic_map_get_entry(new_header, j);
+		mem_copy(e, entry_header, entry_size);
 		e.next = fr.entry_index;
 		e.next = fr.entry_index;
-		mem_copy(rawptr(uintptr(e)+value_offset), rawptr(data+value_offset), value_size);
+		e.hash.key_ptr = rawptr(uintptr(entry_header) + key_offset);
 
 
 		if __dynamic_map_full(new_header) {
 		if __dynamic_map_full(new_header) {
 			__dynamic_map_grow(new_header, loc);
 			__dynamic_map_grow(new_header, loc);