From: Luca Bruno Date: Sat, 28 May 2011 07:30:52 +0000 (+0200) Subject: codegen: Do not initialize temp variable when getting delegate property X-Git-Tag: 0.13.0~60 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d78b4e8c2c065fa0be89e0939c3ca7f1ab2e28b2;p=thirdparty%2Fvala.git codegen: Do not initialize temp variable when getting delegate property Fixes bug 641182. --- diff --git a/codegen/valaccodememberaccessmodule.vala b/codegen/valaccodememberaccessmodule.vala index 8dd8b2ff7..6f2478bdc 100644 --- a/codegen/valaccodememberaccessmodule.vala +++ b/codegen/valaccodememberaccessmodule.vala @@ -268,7 +268,7 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule { } else { delegate_type = base_property.property_type as DelegateType; if (delegate_type != null && delegate_type.delegate_symbol.has_target) { - temp_var = get_temp_variable (new PointerType (new VoidType ())); + temp_var = get_temp_variable (new PointerType (new VoidType ()), false, expr, false); ctemp = get_variable_cexpression (temp_var.name); emit_temp_var (temp_var); ccall.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, ctemp)); diff --git a/tests/Makefile.am b/tests/Makefile.am index b02a449f4..91b8c752c 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -104,6 +104,7 @@ TESTS = \ asynchronous/bug613484.vala \ asynchronous/bug620740.vala \ asynchronous/bug639591.vala \ + asynchronous/bug641182.vala \ asynchronous/bug646945.vala \ asynchronous/closures.vala \ dbus/basic-types.test \ diff --git a/tests/asynchronous/bug641182.vala b/tests/asynchronous/bug641182.vala new file mode 100644 index 000000000..af7e3966e --- /dev/null +++ b/tests/asynchronous/bug641182.vala @@ -0,0 +1,16 @@ +public delegate void Bar (); + +class Foo { + public Bar bar { get; set; } +} + +async void test () { + var foo = new Foo (); + var i = 0; + foo.bar = () => { i++; }; + foo.bar (); +} + +void main() { + test (); +}