From 085a73731dd3dacd7961d4e3cb67cfce00c4d84a Mon Sep 17 00:00:00 2001 From: Christopher Michael Date: Thu, 30 Nov 2006 17:20:36 +0000 Subject: [PATCH] Fix segfault in new input config dialog. Fix potential segfault with a printf. Some formatting. SVN revision: 27292 --- src/bin/e_int_config_imc.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/bin/e_int_config_imc.c b/src/bin/e_int_config_imc.c index 538ef6e94..bbaa39450 100644 --- a/src/bin/e_int_config_imc.c +++ b/src/bin/e_int_config_imc.c @@ -58,10 +58,9 @@ _fill_data(E_Config_Dialog_Data *cfdata) cfdata->imc_basic_list = evas_list_sort(cfdata->imc_basic_list, evas_list_count(cfdata->imc_basic_list), _basic_list_sort_cb); - - cfdata->imc_current = strdup(e_config->input_method); - - return; + + if (e_config->input_method) + cfdata->imc_current = strdup(e_config->input_method); } static void * @@ -78,13 +77,13 @@ _create_data(E_Config_Dialog *cfd) static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { - E_FREE(cfdata->imc_current); - while (cfdata->imc_basic_list) { + while (cfdata->imc_basic_list) + { free(cfdata->imc_basic_list->data); cfdata->imc_basic_list = evas_list_remove_list(cfdata->imc_basic_list, cfdata->imc_basic_list); - } + } free(cfdata); } @@ -92,9 +91,10 @@ _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) { - printf("Setting input method to %s\n", cfdata->imc_current); if (cfdata->imc_current) { + printf("Setting input method to %s\n", cfdata->imc_current); + if (e_config->input_method) evas_stringshare_del(e_config->input_method); e_config->input_method = evas_stringshare_add(cfdata->imc_current); e_intl_input_method_set(e_config->input_method); @@ -168,7 +168,6 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf e_dialog_resizable_set(cfd->dia, 1); return o; - } static int