]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
D-Bus: Fix output array parameters in servers
authorJürg Billeter <j@bitron.ch>
Fri, 29 Jan 2010 17:47:52 +0000 (18:47 +0100)
committerJürg Billeter <j@bitron.ch>
Fri, 29 Jan 2010 17:47:52 +0000 (18:47 +0100)
codegen/valadbusservermodule.vala

index a3f4d03be239866fa927597f8f22d38103de7022..64de305af741ad56cbdadc77d2556930ce3cbc8d 100644 (file)
@@ -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)));
                                        }
                                }
                        }