Fix to handle the null private data
[platform/core/uifw/stt.git] / common / stt_config_mgr.c
index 1cf7c50..626f054 100644 (file)
@@ -1,5 +1,5 @@
 /*
-*  Copyright (c) 2011-2014 Samsung Electronics Co., Ltd All Rights Reserved
+*  Copyright (c) 2011-2016 Samsung Electronics Co., Ltd All Rights Reserved
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
@@ -150,7 +150,7 @@ int __stt_config_mgr_select_lang(const char* engine_id, char** language)
                                        /* Default language is STT_BASE_LANGUAGE */
                                        if (0 == strcmp(STT_BASE_LANGUAGE, engine_lang)) {
                                                *language = strdup(engine_lang);
-                                               SLOG(LOG_DEBUG, stt_tag(), "Selected language : %s", *language);
+                                               SLOG(LOG_DEBUG, stt_tag(), "Selected language : %s", (NULL == *language) ? "NULL" : *language);
                                                return 0;
                                        }
                                }
@@ -161,7 +161,7 @@ int __stt_config_mgr_select_lang(const char* engine_id, char** language)
                        /* Not support STT_BASE_LANGUAGE */
                        if (NULL != engine_lang) {
                                *language = strdup(engine_lang);
-                               SLOG(LOG_DEBUG, stt_tag(), "Selected language : %s", *language);
+                               SLOG(LOG_DEBUG, stt_tag(), "Selected language : %s", (NULL == *language) ? "NULL" : *language);
                                return 0;
                        }
                }
@@ -361,7 +361,7 @@ int __stt_config_set_auto_language()
                SLOG(LOG_ERROR, stt_tag(), "Current config info is NULL");
                return STT_CONFIG_ERROR_OPERATION_FAILED;
        }
-       
+
        /* Check current language */
        if (NULL == g_config_info->language) {
                SLOG(LOG_ERROR, stt_tag(), "Current config language is NULL");
@@ -962,7 +962,7 @@ int stt_config_mgr_get_engine_list(stt_config_supported_engine_cb callback, void
                        return STT_CONFIG_ERROR_OPERATION_FAILED;
                }
 
-               if (false == callback(engine_info->uuid, engine_info->name, 
+               if (false == callback(engine_info->uuid, engine_info->name,
                        engine_info->setting, engine_info->support_silence_detection, user_data)) {
                        break;
                }
@@ -1067,7 +1067,7 @@ int stt_config_mgr_set_engine(const char* engine)
 
                        SLOG(LOG_DEBUG, stt_tag(), " %s", lang);
                        if (NULL != lang && NULL != g_config_info->language) {
-                               if (0 == strcmp(lang, g_config_info->language)) {       
+                               if (0 == strcmp(lang, g_config_info->language)) {
                                        /* language is valid */
                                        is_valid_lang = true;
 
@@ -1085,8 +1085,14 @@ int stt_config_mgr_set_engine(const char* engine)
                if (false == is_valid_lang) {
                        if (NULL != g_config_info->language) {
                                free(g_config_info->language);
+                               g_config_info->language = NULL;
 
                                iter_lang = g_slist_nth(engine_info->languages, 0);
+                               if (NULL == iter_lang) {
+                                       SLOG(LOG_ERROR, stt_tag(), "Fail to get default language");
+                                       break;
+                               }
+
                                lang = iter_lang->data;
 
                                g_config_info->language = strdup(lang);
@@ -1230,8 +1236,8 @@ int stt_config_mgr_get_language_list(const char* engine_id, stt_config_supported
                        /*Get handle data from list*/
                        lang = iter_lang->data;
 
-                       SLOG(LOG_DEBUG, stt_tag(), " %s", lang);
                        if (NULL != lang) {
+                               SLOG(LOG_DEBUG, stt_tag(), " %s", lang);
                                if (false == callback(engine_info->uuid, lang, user_data))
                                        break;
                        }
@@ -1506,7 +1512,7 @@ int __stt_config_mgr_print_engine_info()
                } else {
                        SLOG(LOG_ERROR, stt_tag(), "  language is NONE");
                }
-               SLOG(LOG_DEBUG, stt_tag(), " silence support : %s", 
+               SLOG(LOG_DEBUG, stt_tag(), " silence support : %s",
                        engine_info->support_silence_detection ? "true" : "false");
                iter = g_slist_next(iter);
                i++;
@@ -1600,7 +1606,7 @@ int stt_config_mgr_foreach_time_info(stt_config_result_time_cb callback, void* u
        while (NULL != iter) {
                data = iter->data;
 
-               if (false == callback(data->index, data->event, data->text, 
+               if (false == callback(data->index, data->event, data->text,
                        data->start_time, data->end_time, user_data)) {
                        break;
                }