[glib] gsettings: Don't crash when no schemas are installed



commit 5a894c32321a613393261fd8643ad93713d427fe
Author: Jan Alexander Steffens (heftig) <jan steffens gmail com>
Date:   Wed Feb 24 18:58:25 2016 +0100

    gsettings: Don't crash when no schemas are installed
    
    Still doesn't behave well ("gsettings help" causes an error),
    but at least there's no segfault anymore.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=724847

 gio/gsettings-tool.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/gio/gsettings-tool.c b/gio/gsettings-tool.c
index 6a302ce..0026f55 100644
--- a/gio/gsettings-tool.c
+++ b/gio/gsettings-tool.c
@@ -697,7 +697,7 @@ main (int argc, char **argv)
   if (argc < 2)
     return gsettings_help (FALSE, NULL);
 
-  global_schema_source = g_settings_schema_source_ref (g_settings_schema_source_get_default ());
+  global_schema_source = g_settings_schema_source_get_default ();
 
   if (argc > 3 && g_str_equal (argv[1], "--schemadir"))
     {
@@ -705,7 +705,6 @@ main (int argc, char **argv)
       GError *error = NULL;
 
       global_schema_source = g_settings_schema_source_new_from_directory (argv[2], parent, FALSE, &error);
-      g_settings_schema_source_unref (parent);
 
       if (global_schema_source == NULL)
         {
@@ -719,6 +718,13 @@ main (int argc, char **argv)
       argv = argv + 2;
       argc -= 2;
     }
+  else if (global_schema_source == NULL)
+    {
+      g_printerr (_("No schemas installed\n"));
+      return 1;
+    }
+  else
+    g_settings_schema_source_ref (global_schema_source);
 
   need_settings = TRUE;
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]