Skip to content

Commit 7099391

Browse files
authored
cgen: fix call with fixed array of builtin struct (#26328)
1 parent 8d9c4fa commit 7099391

2 files changed

Lines changed: 13 additions & 4 deletions

File tree

‎vlib/v/gen/c/cgen.v‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1763,7 +1763,7 @@ pub fn (mut g Gen) write_typedef_types() {
17631763
.array_fixed {
17641764
info := sym.info as ast.ArrayFixed
17651765
elem_sym := g.table.sym(info.elem_type)
1766-
if elem_sym.is_builtin() {
1766+
if elem_sym.kind != .struct && elem_sym.is_builtin() {
17671767
styp := sym.cname
17681768
len := info.size
17691769
if len > 0 {
@@ -7090,9 +7090,10 @@ fn (mut g Gen) write_types(symbols []&ast.TypeSymbol) {
70907090
}
70917091
ast.ArrayFixed {
70927092
elem_sym := g.table.sym(sym.info.elem_type)
7093-
if !elem_sym.is_builtin() && !sym.info.elem_type.has_flag(.generic)
7094-
&& !sym.info.is_fn_ret && (!g.pref.skip_unused
7095-
|| (!sym.info.is_fn_ret && sym.idx in g.table.used_features.used_syms)) {
7093+
if (elem_sym.kind == .struct || !elem_sym.is_builtin())
7094+
&& !sym.info.elem_type.has_flag(.generic) && !sym.info.is_fn_ret
7095+
&& (!g.pref.skip_unused || (!sym.info.is_fn_ret
7096+
&& sym.idx in g.table.used_features.used_syms)) {
70967097
// .array_fixed {
70977098
styp := sym.cname
70987099
// array_fixed_char_300 => char x[300]
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
fn get_foo_array(arr [2]VAttribute) []VAttribute {
2+
return [arr[0], arr[1]]
3+
}
4+
5+
fn test_main() {
6+
arr := get_foo_array([VAttribute{}, VAttribute{}]!)
7+
assert arr == get_foo_array([VAttribute{}, VAttribute{}]!)
8+
}

0 commit comments

Comments
 (0)