[Xfce4-commits] r27393 - xfce4-settings/trunk/xfce4-settings-editor

Stephan Arts stephan at xfce.org
Mon Jul 28 20:08:31 CEST 2008


Author: stephan
Date: 2008-07-28 18:08:31 +0000 (Mon, 28 Jul 2008)
New Revision: 27393

Modified:
   xfce4-settings/trunk/xfce4-settings-editor/main.c
Log:
Fix segfault



Modified: xfce4-settings/trunk/xfce4-settings-editor/main.c
===================================================================
--- xfce4-settings/trunk/xfce4-settings-editor/main.c	2008-07-27 23:19:41 UTC (rev 27392)
+++ xfce4-settings/trunk/xfce4-settings-editor/main.c	2008-07-28 18:08:31 UTC (rev 27393)
@@ -133,53 +133,56 @@
     gint i = 0;
 
     GHashTable *hash_table = xfconf_channel_get_properties (channel, NULL);
-    g_hash_table_iter_init (&hash_iter, hash_table);
-    while (g_hash_table_iter_next (&hash_iter, (gpointer *)&key, (gpointer *)&value)) 
+    if (hash_table != NULL)
     {
-        gtk_tree_model_get_iter (GTK_TREE_MODEL (tree_store), &parent_iter, path);
-        gchar **components = g_strsplit (key, "/", 0);
-        for (i = 1; components[i]; ++i)
+        g_hash_table_iter_init (&hash_iter, hash_table);
+        while (g_hash_table_iter_next (&hash_iter, (gpointer *)&key, (gpointer *)&value)) 
         {
-            /* Check if this parent has children */
-            if (gtk_tree_model_iter_children (GTK_TREE_MODEL (tree_store), &child_iter, &parent_iter))
+            gtk_tree_model_get_iter (GTK_TREE_MODEL (tree_store), &parent_iter, path);
+            gchar **components = g_strsplit (key, "/", 0);
+            for (i = 1; components[i]; ++i)
             {
-                while (1)
+                /* Check if this parent has children */
+                if (gtk_tree_model_iter_children (GTK_TREE_MODEL (tree_store), &child_iter, &parent_iter))
                 {
-                    /* Check if the component already exists, if so, return this child */
-                    gtk_tree_model_get_value (GTK_TREE_MODEL(tree_store), &child_iter, 0, &parent_val);
-                    if (!strcmp (components[i], g_value_get_string (&parent_val)))
+                    while (1)
                     {
-                        g_value_unset (&parent_val);
-                        break;
-                    }
-                    else
-                        g_value_unset (&parent_val);
+                        /* Check if the component already exists, if so, return this child */
+                        gtk_tree_model_get_value (GTK_TREE_MODEL(tree_store), &child_iter, 0, &parent_val);
+                        if (!strcmp (components[i], g_value_get_string (&parent_val)))
+                        {
+                            g_value_unset (&parent_val);
+                            break;
+                        }
+                        else
+                            g_value_unset (&parent_val);
 
-                    /* If we are at the end of the list of children, the required child is not available and should be created */
-                    if (!gtk_tree_model_iter_next (GTK_TREE_MODEL (tree_store), &child_iter))
-                    {
-                        gtk_tree_store_append (tree_store, &child_iter, &parent_iter);
-                        g_value_init (&child_value, G_TYPE_STRING);
-                        g_value_set_string (&child_value, components[i]);
-                        gtk_tree_store_set_value (tree_store, &child_iter, 0, &child_value);
-                        g_value_unset (&child_value);
-                        break;
+                        /* If we are at the end of the list of children, the required child is not available and should be created */
+                        if (!gtk_tree_model_iter_next (GTK_TREE_MODEL (tree_store), &child_iter))
+                        {
+                            gtk_tree_store_append (tree_store, &child_iter, &parent_iter);
+                            g_value_init (&child_value, G_TYPE_STRING);
+                            g_value_set_string (&child_value, components[i]);
+                            gtk_tree_store_set_value (tree_store, &child_iter, 0, &child_value);
+                            g_value_unset (&child_value);
+                            break;
+                        }
                     }
                 }
+                else
+                {
+                    /* If the parent does not have any children, create this one */
+                    gtk_tree_store_append (tree_store, &child_iter, &parent_iter);
+                    g_value_init (&child_value, G_TYPE_STRING);
+                    g_value_set_string (&child_value, components[i]);
+                    gtk_tree_store_set_value (tree_store, &child_iter, 0, &child_value);
+                    g_value_unset (&child_value);
+                }
+                parent_iter = child_iter;
             }
-            else
-            {
-                /* If the parent does not have any children, create this one */
-                gtk_tree_store_append (tree_store, &child_iter, &parent_iter);
-                g_value_init (&child_value, G_TYPE_STRING);
-                g_value_set_string (&child_value, components[i]);
-                gtk_tree_store_set_value (tree_store, &child_iter, 0, &child_value);
-                g_value_unset (&child_value);
-            }
-            parent_iter = child_iter;
+
+            g_strfreev (components);
         }
-
-        g_strfreev (components);
     }
 }
 



More information about the Xfce4-commits mailing list