]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
D-Bus: Fix marshalling of GLib.Value parameters
authorJürg Billeter <j@bitron.ch>
Wed, 30 Sep 2009 12:28:41 +0000 (14:28 +0200)
committerJürg Billeter <j@bitron.ch>
Wed, 30 Sep 2009 12:28:41 +0000 (14:28 +0200)
Fixes bug 596862.

codegen/valadbusclientmodule.vala
codegen/valadbusservermodule.vala
tests/Makefile.am
tests/dbus/bug596862.vala [new file with mode: 0644]

index 23158536b957c0513262fb81908c2d2d997ed01b..6779e51d26ceb94bbc2c5e6ee0668b73cacbcfb0 100644 (file)
@@ -1273,7 +1273,7 @@ internal class Vala.DBusClientModule : DBusModule {
 
                foreach (FormalParameter param in sig.get_parameters ()) {
                        cdecl = new CCodeDeclaration (param.parameter_type.get_cname ());
-                       cdecl.add_declarator (new CCodeVariableDeclarator (param.name, default_value_for_type (param.parameter_type, true)));
+                       cdecl.add_declarator (new CCodeVariableDeclarator.zero (param.name, default_value_for_type (param.parameter_type, true)));
                        prefragment.append (cdecl);
 
                        if (get_type_signature (param.parameter_type) == null) {
index c211ecd9b8d40487a2d70072541f7aad98d2c7b5..fb5fcf166d6c2eba94aba605621dd11ec4e3de0d 100644 (file)
@@ -186,7 +186,7 @@ internal class Vala.DBusServerModule : DBusClientModule {
                        owned_type.value_owned = true;
 
                        cdecl = new CCodeDeclaration (owned_type.get_cname ());
-                       cdecl.add_declarator (new CCodeVariableDeclarator (param.name, default_value_for_type (param.parameter_type, true)));
+                       cdecl.add_declarator (new CCodeVariableDeclarator.zero (param.name, default_value_for_type (param.parameter_type, true)));
                        if (param.direction == ParameterDirection.IN) {
                                in_prefragment.append (cdecl);
                        } else {
@@ -270,7 +270,7 @@ internal class Vala.DBusServerModule : DBusClientModule {
                                Report.error (m.return_type.source_reference, "D-Bus serialization of type `%s' is not supported".printf (m.return_type.to_string ()));
                        } else if (m.return_type.is_real_struct_type ()) {
                                cdecl = new CCodeDeclaration (m.return_type.get_cname ());
-                               cdecl.add_declarator (new CCodeVariableDeclarator ("result", default_value_for_type (m.return_type, true)));
+                               cdecl.add_declarator (new CCodeVariableDeclarator.zero ("result", default_value_for_type (m.return_type, true)));
                                out_prefragment.append (cdecl);
 
                                if (!m.coroutine) {
index f3771d513c92cd8466b3e32a26315599b28cc676..e51066997dd7ec47fe365e62df199c1f1e3d67e0 100644 (file)
@@ -60,6 +60,7 @@ TESTS = \
        dbus/basic-types.test \
        dbus/arrays.test \
        dbus/async.test \
+       dbus/bug596862.vala \
        $(NULL)
 
 check-TESTS: $(TESTS)
diff --git a/tests/dbus/bug596862.vala b/tests/dbus/bug596862.vala
new file mode 100644 (file)
index 0000000..fd9ec5e
--- /dev/null
@@ -0,0 +1,8 @@
+[DBus (name = "org.example.Test")]
+public class Foo : Object {
+        public void do_foo (Value value) {
+        }
+}
+
+void main () {
+}