diff options
| author | gingerBill <bill@gingerbill.org> | 2023-04-19 15:34:40 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2023-04-19 15:34:40 +0100 |
| commit | 2d699fd13bb4bb15e9a36b0b1fe44d274b538f3e (patch) | |
| tree | 9c394da198d2ca200bc4c01d0dc8cf214eb9cfbf /core/runtime | |
| parent | 13c321b8fba9ab4bce2a2e715f04c22a0fb65927 (diff) | |
Fix again append on zero sized types
Diffstat (limited to 'core/runtime')
| -rw-r--r-- | core/runtime/core_builtin.odin | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/core/runtime/core_builtin.odin b/core/runtime/core_builtin.odin index 4c96cd34a..4b152e7cc 100644 --- a/core/runtime/core_builtin.odin +++ b/core/runtime/core_builtin.odin @@ -317,9 +317,8 @@ append_elem :: proc(array: ^$T/[dynamic]$E, arg: E, loc := #caller_location) -> if array == nil { return 0 } - array := (^Raw_Dynamic_Array)(array) - when size_of(E) == 0 { + array := (^Raw_Dynamic_Array)(array) array.len += 1 return 1 } else { @@ -346,7 +345,6 @@ append_elems :: proc(array: ^$T/[dynamic]$E, args: ..E, loc := #caller_location) if array == nil { return 0 } - array := (^Raw_Dynamic_Array)(array) arg_len := len(args) if arg_len <= 0 { @@ -354,6 +352,7 @@ append_elems :: proc(array: ^$T/[dynamic]$E, args: ..E, loc := #caller_location) } when size_of(E) == 0 { + array := (^Raw_Dynamic_Array)(array) array.len += arg_len return arg_len } else { @@ -363,12 +362,13 @@ append_elems :: proc(array: ^$T/[dynamic]$E, args: ..E, loc := #caller_location) } arg_len = min(cap(array)-len(array), arg_len) if arg_len > 0 { + a := (^Raw_Dynamic_Array)(array) when size_of(E) != 0 { - data := ([^]E)(array.data) + data := ([^]E)(a.data) assert(condition=data != nil, loc=loc) intrinsics.mem_copy(&data[a.len], raw_data(args), size_of(E) * arg_len) } - array.len += arg_len + a.len += arg_len } return arg_len } |