Allow NULL to be stored into GSettings trees
authorRyan Lortie <desrt@desrt.ca>
Sat, 7 May 2011 09:41:19 +0000 (11:41 +0200)
committerRyan Lortie <desrt@desrt.ca>
Sat, 7 May 2011 09:45:44 +0000 (11:45 +0200)
This is used for resets (in theory) and currently it crashes when
freeing the tree.

gio/gsettingsbackend.c

index 553eda0..ef2c70e 100644 (file)
@@ -918,6 +918,13 @@ g_settings_backend_class_init (GSettingsBackendClass *class)
   g_type_class_add_private (class, sizeof (GSettingsBackendPrivate));
 }
 
+static void
+g_settings_backend_variant_unref0 (gpointer data)
+{
+  if (data != NULL)
+    g_variant_unref (data);
+}
+
 /*< private >
  * g_settings_backend_create_tree:
  * @returns: a new #GTree
@@ -930,7 +937,7 @@ GTree *
 g_settings_backend_create_tree (void)
 {
   return g_tree_new_full ((GCompareDataFunc) strcmp, NULL,
-                          g_free, (GDestroyNotify) g_variant_unref);
+                          g_free, g_settings_backend_variant_unref0);
 }
 
 /**