Fixes bugs 626038 and 572091.
result.delegate_target_destroy_notify_cvalue = new CCodeConstant ("NULL");
}
result.value_type.value_owned = false;
+
+ if (!(variable is Parameter && variable.name == "this") && !(array_type != null && array_type.inline_allocated)) {
+ result = (GLibValue) store_temp_value (result, variable);
+ }
+
return result;
}
structs/structs.vala \
structs/gvalue.vala \
structs/bug530605.vala \
+ structs/bug572091.vala \
structs/bug583603.vala \
structs/bug595587.vala \
structs/bug606202.vala \
objects/bug613840.vala \
objects/bug620706.vala \
objects/bug624594.vala \
+ objects/bug626038.vala \
objects/bug628639.vala \
objects/bug642809.vala \
objects/bug643711.vala \
--- /dev/null
+class Foo {
+ public Foo foo;
+}
+
+void main () {
+ var foo = new Foo ();
+ foo.foo = (owned) foo;
+}
--- /dev/null
+struct Foo {
+ public int bar;
+}
+
+void baz (Foo foo) {
+ foo.bar = 2;
+}
+
+void main() {
+ var foo = Foo () { bar = 1 };
+ baz (foo);
+ assert (foo.bar == 1);
+}