[gconf] gsettings-data-convert: Warn (and fix) invalid schema paths



commit 405f865c07261a95c8c9a09a84ab679c6dd0a330
Author: Colin Walters <walters verbum org>
Date:   Thu Oct 24 16:27:24 2013 -0400

    gsettings-data-convert: Warn (and fix) invalid schema paths
    
    See https://bugzilla.gnome.org/show_bug.cgi?id=704802
    
    https://bugzilla.gnome.org/show_bug.cgi?id=710836

 gsettings/gsettings-data-convert.c |   18 +++++++++++++++++-
 1 files changed, 17 insertions(+), 1 deletions(-)
---
diff --git a/gsettings/gsettings-data-convert.c b/gsettings/gsettings-data-convert.c
index 9b2d1d0..160ed41 100644
--- a/gsettings/gsettings-data-convert.c
+++ b/gsettings/gsettings-data-convert.c
@@ -182,7 +182,23 @@ handle_file (const gchar *filename)
         }
 
       if (schema_path[1] != NULL)
-        settings = g_settings_new_with_path (schema_path[0], schema_path[1]);
+       {
+         char *compat_path_alloced = NULL; 
+         char *compat_path;
+         /* Work around broken .convert files:
+            https://bugzilla.gnome.org/show_bug.cgi?id=704802
+         */
+         if (!g_str_has_suffix (schema_path[1], "/"))
+           {
+             g_warning ("Schema file '%s' has missing trailing / in '%s'",
+                        filename, schema_path[1]);
+             compat_path = compat_path_alloced = g_strconcat (schema_path[1], "/", NULL);
+           }
+         else
+           compat_path = schema_path[1];
+         settings = g_settings_new_with_path (schema_path[0], compat_path);
+         g_free (compat_path_alloced);
+       }
       else
         settings = g_settings_new (schema_path[0]);
 


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