1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

builtin, cgen: fix array of map init with default value (#12885)

This commit is contained in:
yuyi
2021-12-18 16:07:25 +08:00
committed by GitHub
parent 50d988ebc7
commit 7c255f0ff2
3 changed files with 63 additions and 1 deletions

View File

@ -72,6 +72,21 @@ fn __new_array_with_array_default(mylen int, cap int, elm_size int, val array) a
return arr
}
fn __new_array_with_map_default(mylen int, cap int, elm_size int, val map) array {
cap_ := if cap < mylen { mylen } else { cap }
mut arr := array{
element_size: elm_size
data: unsafe { malloc(cap_ * elm_size) }
len: mylen
cap: cap_
}
for i in 0 .. arr.len {
val_clone := unsafe { val.clone() }
unsafe { arr.set_unsafe(i, &val_clone) }
}
return arr
}
// Private function, used by V (`nums := [1, 2, 3]`)
fn new_array_from_c_array(len int, cap int, elm_size int, c_array voidptr) array {
cap_ := if cap < len { len } else { cap }