From: Jürg Billeter Date: Fri, 29 Jan 2010 17:47:52 +0000 (+0100) Subject: D-Bus: Fix output array parameters in servers X-Git-Tag: 0.7.10~35 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a08f29f458abe4dfc90222cd32b2a2be043d92cd;p=thirdparty%2Fvala.git D-Bus: Fix output array parameters in servers --- diff --git a/codegen/valadbusservermodule.vala b/codegen/valadbusservermodule.vala index a3f4d03be..64de305af 100644 --- a/codegen/valadbusservermodule.vala +++ b/codegen/valadbusservermodule.vala @@ -228,12 +228,17 @@ internal class Vala.DBusServerModule : DBusClientModule { cdecl = new CCodeDeclaration ("int"); cdecl.add_declarator (new CCodeVariableDeclarator (length_cname, new CCodeConstant ("0"))); - if (param.direction != ParameterDirection.IN) { - out_prefragment.append (cdecl); - ccall.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier (length_cname))); + if (!m.coroutine || param.direction == ParameterDirection.IN) { + if (param.direction != ParameterDirection.IN) { + out_prefragment.append (cdecl); + ccall.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier (length_cname))); + } else { + in_prefragment.append (cdecl); + ccall.add_argument (new CCodeIdentifier (length_cname)); + } } else { - in_prefragment.append (cdecl); - ccall.add_argument (new CCodeIdentifier (length_cname)); + out_prefragment.append (cdecl); + finish_ccall.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier (length_cname))); } } }