mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-04 14:48:47 +00:00
Fix again append on zero sized types
This commit is contained in:
@@ -317,9 +317,8 @@ append_elem :: proc(array: ^$T/[dynamic]$E, arg: E, loc := #caller_location) ->
|
|||||||
if array == nil {
|
if array == nil {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
array := (^Raw_Dynamic_Array)(array)
|
|
||||||
|
|
||||||
when size_of(E) == 0 {
|
when size_of(E) == 0 {
|
||||||
|
array := (^Raw_Dynamic_Array)(array)
|
||||||
array.len += 1
|
array.len += 1
|
||||||
return 1
|
return 1
|
||||||
} else {
|
} else {
|
||||||
@@ -346,7 +345,6 @@ append_elems :: proc(array: ^$T/[dynamic]$E, args: ..E, loc := #caller_location)
|
|||||||
if array == nil {
|
if array == nil {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
array := (^Raw_Dynamic_Array)(array)
|
|
||||||
|
|
||||||
arg_len := len(args)
|
arg_len := len(args)
|
||||||
if arg_len <= 0 {
|
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 {
|
when size_of(E) == 0 {
|
||||||
|
array := (^Raw_Dynamic_Array)(array)
|
||||||
array.len += arg_len
|
array.len += arg_len
|
||||||
return arg_len
|
return arg_len
|
||||||
} else {
|
} 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)
|
arg_len = min(cap(array)-len(array), arg_len)
|
||||||
if arg_len > 0 {
|
if arg_len > 0 {
|
||||||
|
a := (^Raw_Dynamic_Array)(array)
|
||||||
when size_of(E) != 0 {
|
when size_of(E) != 0 {
|
||||||
data := ([^]E)(array.data)
|
data := ([^]E)(a.data)
|
||||||
assert(condition=data != nil, loc=loc)
|
assert(condition=data != nil, loc=loc)
|
||||||
intrinsics.mem_copy(&data[a.len], raw_data(args), size_of(E) * arg_len)
|
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
|
return arg_len
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user