From: Juerg Billeter Date: Sat, 27 Oct 2007 19:47:50 +0000 (+0000) Subject: use pointer indirection to access length variable of out array parameters, X-Git-Tag: VALA_0_1_5~51 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ef5ebab3ae3e34fb7019f5629de50b131de9525e;p=thirdparty%2Fvala.git use pointer indirection to access length variable of out array parameters, 2007-10-27 Juerg Billeter * gobject/valaccodegenerator.vala: use pointer indirection to access length variable of out array parameters, fixes bug 480019 svn path=/trunk/; revision=670 --- diff --git a/ChangeLog b/ChangeLog index 76ea5b71f..f8a7e7f7a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-10-27 Jürg Billeter + + * gobject/valaccodegenerator.vala: use pointer indirection to access + length variable of out array parameters, fixes bug 480019 + 2007-10-27 Jürg Billeter * ccode/Makefile.am, ccode/valaccodeenum.vala, diff --git a/gobject/valaccodegenerator.vala b/gobject/valaccodegenerator.vala index 34ea1f9d1..953c98d72 100644 --- a/gobject/valaccodegenerator.vala +++ b/gobject/valaccodegenerator.vala @@ -2066,8 +2066,13 @@ public class Vala.CCodeGenerator : CodeGenerator { if (array_expr.symbol_reference is FormalParameter) { var param = (FormalParameter) array_expr.symbol_reference; if (!param.no_array_length) { - var length_expr = new CCodeIdentifier (get_array_length_cname (param.name, dim)); + CCodeExpression length_expr = new CCodeIdentifier (get_array_length_cname (param.name, dim)); + if (param.type_reference.is_out || param.type_reference.is_ref) { + // accessing argument of out/ref param + length_expr = new CCodeParenthesizedExpression (new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, length_expr)); + } if (is_out) { + // passing array as out/ref return new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, length_expr); } else { return length_expr;