Fix memory leak when engine is not found 98/170298/1
authorWonnam Jang <wn.jang@samsung.com>
Mon, 19 Feb 2018 02:43:12 +0000 (11:43 +0900)
committerWonnam Jang <wn.jang@samsung.com>
Mon, 19 Feb 2018 02:52:52 +0000 (02:52 +0000)
Change-Id: I3bb6c64cb76eb6a646c2ad747e50937921b35e4f
Signed-off-by: Wonnam Jang <wn.jang@samsung.com>
common/vc_config_mgr.c

index 77bd3a2..296e88a 100755 (executable)
@@ -602,6 +602,7 @@ int vc_config_mgr_initialize(int uid)
 
        if (0 != __vc_config_mgr_check_engine_is_valid(g_config_info->engine_id)) {
                SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] Fail to get default engine");
+               vc_parser_unload_config(g_config_info);
                pthread_mutex_unlock(&vc_config_mgr_mutex);
                return VC_CONFIG_ERROR_ENGINE_NOT_FOUND;
        }
@@ -615,6 +616,7 @@ int vc_config_mgr_initialize(int uid)
                        char* tmp_language;
                        if (0 != __vc_config_mgr_select_lang(g_config_info->engine_id, &tmp_language)) {
                                SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] Fail to select language");
+                               vc_parser_unload_config(g_config_info);
                                pthread_mutex_unlock(&vc_config_mgr_mutex);
                                return -1;
                        }
@@ -628,6 +630,7 @@ int vc_config_mgr_initialize(int uid)
                                if (0 != vc_parser_set_language(tmp_language)) {
                                        free(tmp_language);
                                        SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] Fail to save config");
+                                       vc_parser_unload_config(g_config_info);
                                        pthread_mutex_unlock(&vc_config_mgr_mutex);
                                        return -1;
                                }
@@ -652,6 +655,7 @@ int vc_config_mgr_initialize(int uid)
        temp_client = (vc_config_client_s*)calloc(1, sizeof(vc_config_client_s));
        if (NULL == temp_client) {
                SLOG(LOG_ERROR, vc_config_tag(), "[ERROR] Fail to allocate memory");
+               vc_parser_unload_config(g_config_info);
                pthread_mutex_unlock(&vc_config_mgr_mutex);
                return VC_ERROR_OUT_OF_MEMORY;
        }