From 9797b12a39dec20f8da037f1266a3093d12a02a3 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Tue, 14 Apr 2015 17:42:38 +0300 Subject: client: Fix no handling dict properly D-Bus dict may contain keys that are not of string type. --- client/main.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'client') diff --git a/client/main.c b/client/main.c index bb67f3d5b..1e76aef4b 100644 --- a/client/main.c +++ b/client/main.c @@ -162,6 +162,7 @@ static void print_iter(const char *label, const char *name, unsigned char byte; const char *valstr; DBusMessageIter subiter; + char *entry; if (iter == NULL) { rl_printf("%s%s is nil\n", label, name); @@ -212,9 +213,14 @@ static void print_iter(const char *label, const char *name, break; case DBUS_TYPE_DICT_ENTRY: dbus_message_iter_recurse(iter, &subiter); - dbus_message_iter_get_basic(&subiter, &valstr); + entry = g_strconcat(name, " Key", NULL); + print_iter(label, entry, &subiter); + g_free(entry); + + entry = g_strconcat(name, " Value", NULL); dbus_message_iter_next(&subiter); - print_iter(label, valstr, &subiter); + print_iter(label, entry, &subiter); + g_free(entry); break; default: rl_printf("%s%s has unsupported type\n", label, name); -- cgit v1.2.1