summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorViktor Odintsev <ninetls@xfce.org>2017-08-17 03:35:48 +0300
committerAli Abdallah <ali@xfce.org>2017-08-31 13:41:18 +0200
commitc8215a9074805ddb4a0ba384283e33a573da90f9 (patch)
treef64eed51fef84705128878c43cb49be82a8d879a /common
parent25088094efdba26c777d49a2bcdde98105112525 (diff)
downloadxfconf-c8215a9074805ddb4a0ba384283e33a573da90f9.tar.gz
Allow to store empty arrays
Signed-off-by: Ali Abdallah <ali@xfce.org>
Diffstat (limited to 'common')
-rw-r--r--common/xfconf-gvaluefuncs.c36
1 files 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;