if (target_destroy_notify != null) {
ccode.add_assignment (target_destroy_notify, new CCodeConstant ("NULL"));
}
+ } else if (expr.inner.value_type is ArrayType) {
+ var array_type = (ArrayType) expr.inner.value_type;
+ var glib_value = (GLibValue) expr.inner.target_value;
+
+ ccode.add_assignment (get_cvalue (expr.inner), new CCodeConstant ("NULL"));
+ if (glib_value.array_length_cvalues != null) {
+ for (int dim = 1; dim <= array_type.rank; dim++) {
+ ccode.add_assignment (get_array_length_cvalue (glib_value, dim), new CCodeConstant ("0"));
+ }
+ }
} else {
ccode.add_assignment (get_cvalue (expr.inner), new CCodeConstant ("NULL"));
- }
+ }
}
public override void visit_binary_expression (BinaryExpression expr) {
void test_reference_transfer () {
var baz = (owned) foo;
baz = (owned) bar;
+
+ var data = new string[]{"foo"};
+ var data2 = (owned) data;
+ assert (data.length == 0);
}
void test_length_assignment () {
test_length_assignment ();
test_inline_array ();
}
-