]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
GAsync: Fix closures in instance async methods
authorJürg Billeter <j@bitron.ch>
Tue, 22 Sep 2009 16:19:58 +0000 (18:19 +0200)
committerJürg Billeter <j@bitron.ch>
Tue, 22 Sep 2009 16:19:58 +0000 (18:19 +0200)
codegen/valaccodebasemodule.vala
codegen/valaccodemethodmodule.vala

index 5fa12f0de8abe11f0fcc0df9b18659e268062d23..0b15c617d8971c5dab844e6e1114fe70567fb4c5 100644 (file)
@@ -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)));
                        }
index bb28ecfb92824ad9287a3ab6d672a7d6d764ea56..bed3273b77e95ae6c33f8fc5e3d920cf8e697bca 100644 (file)
@@ -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));