summaryrefslogtreecommitdiff
path: root/libgnomekbd
diff options
context:
space:
mode:
authorSergey V. Udaltsov <svu@gnome.org>2011-01-31 21:38:20 +0000
committerSergey V. Udaltsov <svu@gnome.org>2011-01-31 21:38:20 +0000
commite49eea4d56d44a221ceb30f835399bc3159385ff (patch)
tree87e5503cb705eeac8affa546570a51361c4d8a83 /libgnomekbd
parentb17364bbac14cf8fdb90d10346571e700489b95c (diff)
downloadlibgnomekbd-e49eea4d56d44a221ceb30f835399bc3159385ff.tar.gz
Improved handling of null/empty string with gsettings
The patch contributed by halfline (Ray Strode) to avoid crashes in gdm
Diffstat (limited to 'libgnomekbd')
-rw-r--r--libgnomekbd/gkbd-keyboard-config.c15
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