From 13c321b8fba9ab4bce2a2e715f04c22a0fb65927 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 19 Apr 2023 15:31:51 +0100 Subject: [PATCH] Fix missing cast in `array_elems` --- core/runtime/core_builtin.odin | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/core/runtime/core_builtin.odin b/core/runtime/core_builtin.odin index 84fe5e522..4c96cd34a 100644 --- a/core/runtime/core_builtin.odin +++ b/core/runtime/core_builtin.odin @@ -317,6 +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.len += 1 return 1 @@ -344,6 +346,7 @@ 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 { @@ -360,13 +363,12 @@ 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)(a.data) + data := ([^]E)(array.data) assert(condition=data != nil, loc=loc) intrinsics.mem_copy(&data[a.len], raw_data(args), size_of(E) * arg_len) } - a.len += arg_len + array.len += arg_len } return arg_len }