diff options
author | Sergey V. Udaltsov <svu@gnome.org> | 2011-01-31 21:38:20 +0000 |
---|---|---|
committer | Sergey V. Udaltsov <svu@gnome.org> | 2011-01-31 21:38:20 +0000 |
commit | e49eea4d56d44a221ceb30f835399bc3159385ff (patch) | |
tree | 87e5503cb705eeac8affa546570a51361c4d8a83 /libgnomekbd | |
parent | b17364bbac14cf8fdb90d10346571e700489b95c (diff) | |
download | libgnomekbd-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.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 |