[libgnomekbd] Improved handling of null/empty string with gsettings



commit e49eea4d56d44a221ceb30f835399bc3159385ff
Author: Sergey V. Udaltsov <svu gnome org>
Date:   Mon Jan 31 21:38:20 2011 +0000

    Improved handling of null/empty string with gsettings
    
    The patch contributed by halfline (Ray Strode) to avoid crashes in gdm

 libgnomekbd/gkbd-keyboard-config.c |   15 +++++++++++++--
 1 files changed, 13 insertions(+), 2 deletions(-)
---
diff --git a/libgnomekbd/gkbd-keyboard-config.c b/libgnomekbd/gkbd-keyboard-config.c
index bbbc840..fa562f9 100644
--- a/libgnomekbd/gkbd-keyboard-config.c
+++ b/libgnomekbd/gkbd-keyboard-config.c
@@ -328,12 +328,13 @@ gkbd_keyboard_config_load_params (GkbdKeyboardConfig * kbd_config,
 	gchar *pc;
 
 	pc = g_settings_get_string (kbd_config->settings, param_names[0]);
-	if (pc == NULL) {
+
+	if (pc == NULL || pc[0] == '\0') {
 		gkbd_keyboard_config_model_set (kbd_config, NULL);
 	} else {
 		gkbd_keyboard_config_model_set (kbd_config, pc);
-		g_free (pc);
 	}
+	g_free (pc);
 	xkl_debug (150, "Loaded Kbd model: [%s]\n",
 		   kbd_config->model ? kbd_config->model : "(null)");
 
@@ -342,10 +343,20 @@ gkbd_keyboard_config_load_params (GkbdKeyboardConfig * kbd_config,
 	kbd_config->layouts_variants =
 	    g_settings_get_strv (kbd_config->settings, param_names[1]);
 
+	if (kbd_config->layouts_variants != NULL && kbd_config->layouts_variants[0] == NULL) {
+		g_strfreev (kbd_config->layouts_variants);
+		kbd_config->layouts_variants = NULL;
+	}
+
 	g_strfreev (kbd_config->options);
 
 	kbd_config->options =
 	    g_settings_get_strv (kbd_config->settings, param_names[2]);
+
+	if (kbd_config->options != NULL && kbd_config->options[0] == NULL) {
+		g_strfreev (kbd_config->options);
+		kbd_config->options = NULL;
+	}
 }
 
 static void



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