mita icon indicating copy to clipboard operation
mita copied to clipboard

Struct constructors don't copy arrays

Open wegendt-bosch opened this issue 6 years ago • 0 comments

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
}
;

wegendt-bosch avatar Apr 25 '18 14:04 wegendt-bosch