From b863329f6ba5fd5ae6d397fe335a08b5af7ca84f Mon Sep 17 00:00:00 2001 From: Viktor Odintsev Date: Thu, 17 Aug 2017 03:35:48 +0300 Subject: [PATCH] Allow to store empty arrays --- common/xfconf-gvaluefuncs.c | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/common/xfconf-gvaluefuncs.c b/common/xfconf-gvaluefuncs.c index f2bcae8..38a012b 100644 --- a/common/xfconf-gvaluefuncs.c +++ b/common/xfconf-gvaluefuncs.c @@ -473,28 +473,34 @@ xfconf_gvalue_to_gvariant (const GValue *value) if (G_VALUE_TYPE(value) == G_TYPE_PTR_ARRAY) { GPtrArray *arr; - GVariantBuilder builder; - guint i = 0; - - g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY); arr = (GPtrArray*)g_value_get_boxed (value); - /* Check for array and that the array has at least one element */ - g_return_val_if_fail (arr && arr->len != 0, NULL); + /* Check for array */ + g_return_val_if_fail (arr, NULL); - for (i=0; i < arr->len; ++i) { - GValue *v = g_ptr_array_index (arr, i); - GVariant *var = NULL; + if (arr->len == 0) { + variant = g_variant_ref_sink(g_variant_new ("av", NULL)); + } + else { + GVariantBuilder builder; + guint i = 0; - var = xfconf_basic_gvalue_to_gvariant (v); - if (var) { - g_variant_builder_add (&builder, "v", var, NULL); - g_variant_unref (var); + g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY); + + for (i=0; i < arr->len; ++i) { + GValue *v = g_ptr_array_index (arr, i); + GVariant *var = NULL; + + var = xfconf_basic_gvalue_to_gvariant (v); + if (var) { + g_variant_builder_add (&builder, "v", var, NULL); + g_variant_unref (var); + } } - } - variant = g_variant_ref_sink(g_variant_builder_end (&builder)); + variant = g_variant_ref_sink(g_variant_builder_end (&builder)); + } } else if (G_VALUE_TYPE(value) == G_TYPE_STRV) { gchar **strlist; -- 2.14.1