From: Adam Folmert Date: Sun, 14 Feb 2010 02:57:37 +0000 (+0100) Subject: Fix postconditions for methods returning structs X-Git-Tag: 0.8.0~90 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e1f191fd4eaa0db49eea122860d872b06a605197;p=thirdparty%2Fvala.git Fix postconditions for methods returning structs Fixes bug 602927. --- diff --git a/codegen/valaccodememberaccessmodule.vala b/codegen/valaccodememberaccessmodule.vala index edfa1333b..f55da3605 100644 --- a/codegen/valaccodememberaccessmodule.vala +++ b/codegen/valaccodememberaccessmodule.vala @@ -355,7 +355,12 @@ internal class Vala.CCodeMemberAccessModule : CCodeControlFlowModule { var local = (LocalVariable) expr.symbol_reference; if (local.is_result) { // used in postconditions - expr.ccodenode = new CCodeIdentifier ("result"); + // structs are returned as out parameter + if (local.variable_type != null && local.variable_type.is_real_non_null_struct_type ()) { + expr.ccodenode = new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, new CCodeIdentifier ("result")); + } else { + expr.ccodenode = new CCodeIdentifier ("result"); + } } else if (local.captured) { // captured variables are stored on the heap var block = (Block) local.parent_symbol;