[Xfce4-commits] [xfce/xfconf] 01/01: Allow to store empty arrays

noreply at xfce.org noreply at xfce.org
Thu Aug 31 13:56:35 CEST 2017


This is an automated email from the git hooks/post-receive script.

a   l   i       p   u   s   h   e   d       a       c   o   m   m   i   t       t   o       b   r   a   n   c   h       m   a   s   t   e   r   
   in repository xfce/xfconf.

commit c8215a9074805ddb4a0ba384283e33a573da90f9
Author: Viktor Odintsev <ninetls at xfce.org>
Date:   Thu Aug 17 03:35:48 2017 +0300

    Allow to store empty arrays
    
    Signed-off-by: Ali Abdallah <ali at xfce.org>
---
 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;

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list