mita
mita copied to clipboard
Struct constructors don't copy arrays
This:
var foo = new array<int32>(size = 10);
struct s {
var a: array<int32>;
}
var bar = s(foo);
generates this:
int32_t data_foo_0[10];
array_int32_t foo = {
.data = data_foo_0,
.length = 10
};
s bar = {
.a = foo
}
;
instead of the correct:
int32_t data_foo_0[10];
array_int32_t foo = {
.data = data_foo_0,
.length = 10
};
int32_t data_bar_tmp_0[foo.length];
array_int32_t bar_tmp = {
.data = data_bar_tmp_0,
.length = foo.length
};
memcpy(bar_tmp.data, foo.data, bar_tmp.length);
s bar = {
.a = bar_tmp
}
;