gdbus: Deep copy of variants also requires a signature
authorMarcel Holtmann <marcel@holtmann.org>
Fri, 14 Dec 2012 14:07:36 +0000 (15:07 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Wed, 19 Dec 2012 02:49:10 +0000 (03:49 +0100)
gdbus/client.c

index 5a6cfdd..7def1f5 100644 (file)
@@ -81,10 +81,15 @@ static void iter_append_iter(DBusMessageIter *base, DBusMessageIter *iter)
 
                dbus_message_iter_recurse(iter, &iter_sub);
 
-               if (type == DBUS_TYPE_ARRAY) {
+               switch (type) {
+               case DBUS_TYPE_ARRAY:
+               case DBUS_TYPE_VARIANT:
                        sig = dbus_message_iter_get_signature(&iter_sub);
-               } else
+                       break;
+               default:
                        sig = NULL;
+                       break;
+               }
 
                dbus_message_iter_open_container(base, type, sig, &base_sub);