From 750ce5cba7cf81e56781879d6e31765561290fee Mon Sep 17 00:00:00 2001 From: Viktor Odintsev Date: Wed, 10 Jan 2018 00:48:52 +0300 Subject: [PATCH] Initialize GValue for empty arrays (Bug #13780) --- common/xfconf-gvaluefuncs.c | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/common/xfconf-gvaluefuncs.c b/common/xfconf-gvaluefuncs.c index 38a012b..a775369 100644 --- a/common/xfconf-gvaluefuncs.c +++ b/common/xfconf-gvaluefuncs.c @@ -623,30 +623,28 @@ GValue * xfconf_gvariant_to_gvalue (GVariant *in_variant) gsize nchild; gsize idx = 0; - nchild = g_variant_n_children (variant); - - if (nchild > 0) { - arr = g_ptr_array_new_full(nchild, (GDestroyNotify)xfonf_free_array_elem_val); + g_value_init(value, G_TYPE_PTR_ARRAY); - while (idx < nchild ) { - GVariant *v; - GValue *arr_val; + nchild = g_variant_n_children (variant); + arr = g_ptr_array_new_full(nchild, (GDestroyNotify)xfonf_free_array_elem_val); - arr_val = g_new0(GValue, 1); + while (idx < nchild ) { + GVariant *v; + GValue *arr_val; - var = g_variant_get_child_value (variant, idx); - v = g_variant_get_variant (var); - xfconf_basic_gvariant_to_gvalue (v, arr_val); + arr_val = g_new0(GValue, 1); - g_variant_unref (v); - g_variant_unref (var); - g_ptr_array_add (arr, arr_val); - idx++; - } + var = g_variant_get_child_value (variant, idx); + v = g_variant_get_variant (var); + xfconf_basic_gvariant_to_gvalue (v, arr_val); - g_value_init(value, G_TYPE_PTR_ARRAY); - g_value_take_boxed(value, arr); + g_variant_unref (v); + g_variant_unref (var); + g_ptr_array_add (arr, arr_val); + idx++; } + + g_value_take_boxed(value, arr); } else if (g_variant_is_of_type (variant, G_VARIANT_TYPE("as"))) { g_value_init(value, G_TYPE_STRV); -- 2.15.1