]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
GAsync: Fix generating array dup/copy wrappers from async method
authorJürg Billeter <j@bitron.ch>
Wed, 16 Sep 2009 15:32:10 +0000 (17:32 +0200)
committerJürg Billeter <j@bitron.ch>
Wed, 16 Sep 2009 15:32:10 +0000 (17:32 +0200)
codegen/valaccodearraymodule.vala

index 1bc1f633c2ec30a0b464456699387f875a7fc268..0dc15721ee8ec49405f19bf6e0cbaec56d6714c4 100644 (file)
@@ -690,7 +690,9 @@ internal class Vala.CCodeArrayModule : CCodeMethodCallModule {
                var block = new CCodeBlock ();
 
                if (requires_copy (array_type.element_type)) {
+                       var old_symbol = current_symbol;
                        var old_temp_vars = temp_vars;
+                       current_symbol = null;
 
                        var cdecl = new CCodeDeclaration (array_type.get_cname ());
                        var cvardecl = new CCodeVariableDeclarator ("result");
@@ -718,6 +720,7 @@ internal class Vala.CCodeArrayModule : CCodeMethodCallModule {
                        var cfrag = new CCodeFragment ();
                        append_temp_decl (cfrag, temp_vars);
                        block.add_statement (cfrag);
+                       current_symbol = old_symbol;
                        temp_vars = old_temp_vars;
                } else {
                        var dup_call = new CCodeFunctionCall (new CCodeIdentifier ("g_memdup"));
@@ -761,7 +764,9 @@ internal class Vala.CCodeArrayModule : CCodeMethodCallModule {
                var block = new CCodeBlock ();
 
                if (requires_copy (array_type.element_type)) {
+                       var old_symbol = current_symbol;
                        var old_temp_vars = temp_vars;
+                       current_symbol = null;
 
                        var idx_decl = new CCodeDeclaration ("int");
                        idx_decl.add_declarator (new CCodeVariableDeclarator ("i"));
@@ -778,6 +783,7 @@ internal class Vala.CCodeArrayModule : CCodeMethodCallModule {
                        var cfrag = new CCodeFragment ();
                        append_temp_decl (cfrag, temp_vars);
                        block.add_statement (cfrag);
+                       current_symbol = old_symbol;
                        temp_vars = old_temp_vars;
                } else {
                        source_declarations.add_include ("string.h");