mirror of
https://github.com/odin-lang/Odin.git
synced 2026-03-02 06:38:21 +00:00
Change map_reserve_dynamic no do anything when current capacity is greater than specified for the reserve
This commit is contained in:
@@ -300,7 +300,7 @@ shrink_map :: proc(m: ^$T/map[$K]$V, loc := #caller_location) -> (did_shrink: bo
|
||||
delete_key :: proc(m: ^$T/map[$K]$V, key: K) -> (deleted_key: K, deleted_value: V) {
|
||||
if m != nil {
|
||||
key := key
|
||||
old_k, old_v, ok := map_erase_dynamic((^Raw_Map)(m), map_info(T), uintptr(&key))
|
||||
old_k, old_v, ok := map_erase_dynamic((^Raw_Map)(m), map_info(T), uintptr(&key))
|
||||
if ok {
|
||||
deleted_key = (^K)(old_k)^
|
||||
deleted_value = (^V)(old_v)^
|
||||
|
||||
@@ -442,7 +442,6 @@ map_reserve_dynamic :: proc "odin" (#no_alias m: ^Raw_Map, #no_alias info: ^Map_
|
||||
}
|
||||
|
||||
new_capacity := new_capacity
|
||||
new_capacity = max(new_capacity, uintptr(1)<<MAP_MIN_LOG2_CAPACITY)
|
||||
|
||||
log2_capacity := map_log2_cap(m^)
|
||||
capacity := uintptr(1) << log2_capacity
|
||||
@@ -450,6 +449,9 @@ map_reserve_dynamic :: proc "odin" (#no_alias m: ^Raw_Map, #no_alias info: ^Map_
|
||||
if capacity >= new_capacity {
|
||||
return nil
|
||||
}
|
||||
|
||||
new_capacity = max(new_capacity, uintptr(1)<<MAP_MIN_LOG2_CAPACITY)
|
||||
|
||||
// ceiling nearest power of two
|
||||
log2_new_capacity := size_of(uintptr) - intrinsics.count_leading_zeros(new_capacity-1)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user