From: Juerg Billeter Date: Fri, 18 Jan 2008 16:59:12 +0000 (+0000) Subject: fix iteration over collections passed by ref parameter using foreach, X-Git-Tag: VALA_0_1_6~15 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ba5fed6416b2c851cd0f57ff892c2a8b5073bda7;p=thirdparty%2Fvala.git fix iteration over collections passed by ref parameter using foreach, 2008-01-18 Juerg Billeter * gobject/valaccodegenerator.vala: fix iteration over collections passed by ref parameter using foreach, patch by Hans Vercammen, fixes bug 510419 svn path=/trunk/; revision=852 --- diff --git a/ChangeLog b/ChangeLog index bf7b3b13c..d99b46b5f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-01-18 Jürg Billeter + + * gobject/valaccodegenerator.vala: fix iteration over collections + passed by ref parameter using foreach, + patch by Hans Vercammen, fixes bug 510419 + 2008-01-18 Jürg Billeter * vala/valanulltype.vala, vala/valasemanticanalyzer.vala: simplify diff --git a/gobject/valaccodegenerator.vala b/gobject/valaccodegenerator.vala index 7fb0f9ce1..453e0e2f5 100644 --- a/gobject/valaccodegenerator.vala +++ b/gobject/valaccodegenerator.vala @@ -1520,7 +1520,10 @@ public class Vala.CCodeGenerator : CodeGenerator { cblock.add_statement (cfrag); var collection_backup = stmt.collection_variable_declarator; - var ccoldecl = new CCodeDeclaration (collection_backup.type_reference.get_cname ()); + var collection_type = collection_backup.type_reference.copy (); + collection_type.is_ref = false; + collection_type.is_out = false; + var ccoldecl = new CCodeDeclaration (collection_type.get_cname ()); var ccolvardecl = new CCodeVariableDeclarator.with_initializer (collection_backup.name, (CCodeExpression) stmt.collection.ccodenode); ccolvardecl.line = cblock.line; ccoldecl.add_declarator (ccolvardecl); @@ -1542,7 +1545,7 @@ public class Vala.CCodeGenerator : CodeGenerator { if (array_len is CCodeConstant) { var it_name = "%s_it".printf (stmt.variable_name); - var citdecl = new CCodeDeclaration (stmt.collection.static_type.get_cname ()); + var citdecl = new CCodeDeclaration (collection_type.get_cname ()); citdecl.add_declarator (new CCodeVariableDeclarator (it_name)); cblock.add_statement (citdecl); @@ -1640,7 +1643,7 @@ public class Vala.CCodeGenerator : CodeGenerator { stmt.collection.static_type.data_type == gslist_type) { var it_name = "%s_it".printf (stmt.variable_name); - var citdecl = new CCodeDeclaration (stmt.collection.static_type.get_cname ()); + var citdecl = new CCodeDeclaration (collection_type.get_cname ()); var citvardecl = new CCodeVariableDeclarator (it_name); citvardecl.line = cblock.line; citdecl.add_declarator (citvardecl);