From dfb5eaffb71a423592df228c09bb4a44bda05d6d Mon Sep 17 00:00:00 2001 From: Tomas Bzatek Date: Thu, 5 Aug 2010 13:58:20 +0200 Subject: [gsettings] Handle empty lists on migration g_variant_new() doesn't like empty array-typed GVariantBuilder instances. See bug 625663 for details. --- gsettings/gsettings-data-convert.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/gsettings/gsettings-data-convert.c b/gsettings/gsettings-data-convert.c index 4effcb5b..07ccbe8a 100644 --- a/gsettings/gsettings-data-convert.c +++ b/gsettings/gsettings-data-convert.c @@ -183,13 +183,18 @@ handle_file (const gchar *filename) case GCONF_VALUE_STRING: builder = g_variant_builder_new (G_VARIANT_TYPE_ARRAY); list = gconf_value_get_list (value); - for (l = list; l; l = l->next) + if (list != NULL) { - GConfValue *lv = l->data; - s = gconf_value_get_string (lv); - g_variant_builder_add (builder, "s", s); + for (l = list; l; l = l->next) + { + GConfValue *lv = l->data; + s = gconf_value_get_string (lv); + g_variant_builder_add (builder, "s", s); + } + v = g_variant_new ("as", builder); } - v = g_variant_new ("as", builder); + else + v = g_variant_new_array (G_VARIANT_TYPE_STRING, NULL, 0); g_variant_ref_sink (v); if (dry_run) @@ -209,13 +214,18 @@ handle_file (const gchar *filename) case GCONF_VALUE_INT: builder = g_variant_builder_new (G_VARIANT_TYPE_ARRAY); list = gconf_value_get_list (value); - for (l = list; l; l = l->next) + if (list != NULL) { - GConfValue *lv = l->data; - ii = gconf_value_get_int (lv); - g_variant_builder_add (builder, "i", ii); + for (l = list; l; l = l->next) + { + GConfValue *lv = l->data; + ii = gconf_value_get_int (lv); + g_variant_builder_add (builder, "i", ii); + } + v = g_variant_new ("ai", builder); } - v = g_variant_new ("ai", builder); + else + v = g_variant_new_array (G_VARIANT_TYPE_INT32, NULL, 0); g_variant_ref_sink (v); if (dry_run) -- cgit v1.2.1