From 7fb9b876fa6ec63c05df1c5e441bcc87e48397e2 Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Wed, 14 Apr 2010 23:35:56 -0400 Subject: [PATCH] GVariant: fix for g_variant_iter_loop() (cherry picked from commit d17f4bee175cd9149d5f2b1ed1ae6d262d6a1394) --- glib/gvariant.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/glib/gvariant.c b/glib/gvariant.c index f8f29e063..5948ccda6 100644 --- a/glib/gvariant.c +++ b/glib/gvariant.c @@ -3473,17 +3473,21 @@ g_variant_valist_get (const gchar **str, else /* tuple, dictionary entry */ { - GVariantIter iter; + gint index = 0; g_assert (**str == '(' || **str == '{'); - g_variant_iter_init (&iter, value); (*str)++; while (**str != ')' && **str != '}') { - value = g_variant_iter_next_value (&iter); - g_variant_valist_get (str, value, free, app); - g_variant_unref (value); + if (value != NULL) + { + GVariant *child = g_variant_get_child_value (value, index++); + g_variant_valist_get (str, child, free, app); + g_variant_unref (child); + } + else + g_variant_valist_get (str, NULL, free, app); } (*str)++; }