From: Jürg Billeter Date: Tue, 22 Sep 2009 16:19:58 +0000 (+0200) Subject: GAsync: Fix closures in instance async methods X-Git-Tag: 0.7.7~53 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a7ce6392c8d6193fe7d8e4fafee7a87bcb1ac1f4;p=thirdparty%2Fvala.git GAsync: Fix closures in instance async methods --- diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 5fa12f0de..0b15c617d 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -1721,7 +1721,7 @@ internal class Vala.CCodeBaseModule : CCodeModule { cblock.add_statement (new CCodeExpressionStatement (new CCodeAssignment (new CCodeMemberAccess.pointer (get_variable_cexpression ("_data%d_".printf (block_id)), "_data%d_".printf (parent_block_id)), ref_call))); } else if (in_constructor || (current_method != null && current_method.binding == MemberBinding.INSTANCE)) { var ref_call = new CCodeFunctionCall (get_dup_func_expression (new ObjectType (current_class), b.source_reference)); - ref_call.add_argument (new CCodeIdentifier ("self")); + ref_call.add_argument (get_result_cexpression ("self")); cblock.add_statement (new CCodeExpressionStatement (new CCodeAssignment (new CCodeMemberAccess.pointer (get_variable_cexpression ("_data%d_".printf (block_id)), "self"), ref_call))); } diff --git a/codegen/valaccodemethodmodule.vala b/codegen/valaccodemethodmodule.vala index bb28ecfb9..bed3273b7 100644 --- a/codegen/valaccodemethodmodule.vala +++ b/codegen/valaccodemethodmodule.vala @@ -425,7 +425,7 @@ internal class Vala.CCodeMethodModule : CCodeStructModule { } int parent_block_id = get_block_id (parent_closure_block); - var parent_data = new CCodeMemberAccess.pointer (get_variable_cexpression ("_data%d_".printf (block_id)), "_data%d_".printf (parent_block_id)); + var parent_data = new CCodeMemberAccess.pointer (new CCodeIdentifier ("_data%d_".printf (block_id)), "_data%d_".printf (parent_block_id)); var cdecl = new CCodeDeclaration ("Block%dData*".printf (parent_block_id)); cdecl.add_declarator (new CCodeVariableDeclarator ("_data%d_".printf (parent_block_id), parent_data)); @@ -438,7 +438,7 @@ internal class Vala.CCodeMethodModule : CCodeStructModule { // add self variable for closures // as closures have block data parameter if (m.binding == MemberBinding.INSTANCE) { - var cself = new CCodeMemberAccess.pointer (get_variable_cexpression ("_data%d_".printf (block_id)), "self"); + var cself = new CCodeMemberAccess.pointer (new CCodeIdentifier ("_data%d_".printf (block_id)), "self"); var cdecl = new CCodeDeclaration ("%s *".printf (current_class.get_cname ())); cdecl.add_declarator (new CCodeVariableDeclarator ("self", cself));