From bb4edcfb7065d45743e03b6a5e00138ec1e1d4d3 Mon Sep 17 00:00:00 2001 From: "sooyeon.kim" Date: Wed, 14 Nov 2018 20:55:07 +0900 Subject: [PATCH] Fix memory leak Change-Id: Ifbcec791108de7aeaabc6479d668dc63374e7d56 Signed-off-by: sooyeon.kim --- server/ttsd_data.cpp | 52 ++++++++++++++++++++++++---------------------------- server/ttsd_server.c | 9 +++++++++ 2 files changed, 33 insertions(+), 28 deletions(-) diff --git a/server/ttsd_data.cpp b/server/ttsd_data.cpp index bb17c7d..47e335b 100644 --- a/server/ttsd_data.cpp +++ b/server/ttsd_data.cpp @@ -524,23 +524,21 @@ int ttsd_data_clear_speak_data(int uid, speak_data_s** speak_data) int index = 0; index = ttsd_data_is_client(uid); if (index >= 0) { - if (!g_app_list[index].m_speak_data.empty()) { - if (NULL != *speak_data) { - SLOG(LOG_DEBUG, tts_tag(), "[DEBUG] utt(%d), text(%s), lang(%s), vctype(%d) speed(%d)", - (*speak_data)->utt_id, (*speak_data)->text, (*speak_data)->lang, (*speak_data)->vctype, (*speak_data)->speed); - - if (NULL != (*speak_data)->text) { - free((*speak_data)->text); - (*speak_data)->text = NULL; - } - if (NULL != (*speak_data)->lang) { - free((*speak_data)->lang); - (*speak_data)->lang = NULL; - } - - free(*speak_data); - *speak_data = NULL; + if (NULL != *speak_data) { + SLOG(LOG_DEBUG, tts_tag(), "[DEBUG] utt(%d), text(%s), lang(%s), vctype(%d) speed(%d)", + (*speak_data)->utt_id, (*speak_data)->text, (*speak_data)->lang, (*speak_data)->vctype, (*speak_data)->speed); + + if (NULL != (*speak_data)->text) { + free((*speak_data)->text); + (*speak_data)->text = NULL; + } + if (NULL != (*speak_data)->lang) { + free((*speak_data)->lang); + (*speak_data)->lang = NULL; } + + free(*speak_data); + *speak_data = NULL; } } @@ -556,19 +554,17 @@ int ttsd_data_clear_sound_data(int uid, sound_data_s** sound_data) int index = 0; index = ttsd_data_is_client(uid); if (index >= 0) { - if (!g_app_list[index].m_wav_data.empty()) { - if (NULL != *sound_data) { - SLOG(LOG_ERROR, tts_tag(), "[DEBUG][%p] event(%d) data(%p) size(%d) rate(%d) utt(%d)", - (*sound_data), (*sound_data)->event, (*sound_data)->data, (*sound_data)->data_size, (*sound_data)->rate, (*sound_data)->utt_id); - - if (NULL != (*sound_data)->data) { - free((*sound_data)->data); - (*sound_data)->data = NULL; - } - - free(*sound_data); - *sound_data = NULL; + if (NULL != *sound_data) { + SLOG(LOG_ERROR, tts_tag(), "[DEBUG][%p] event(%d) data(%p) size(%d) rate(%d) utt(%d)", + (*sound_data), (*sound_data)->event, (*sound_data)->data, (*sound_data)->data_size, (*sound_data)->rate, (*sound_data)->utt_id); + + if (NULL != (*sound_data)->data) { + free((*sound_data)->data); + (*sound_data)->data = NULL; } + + free(*sound_data); + *sound_data = NULL; } } pthread_mutex_unlock(&g_sound_data_mutex); diff --git a/server/ttsd_server.c b/server/ttsd_server.c index 14dd166..7f2fe64 100644 --- a/server/ttsd_server.c +++ b/server/ttsd_server.c @@ -233,6 +233,15 @@ int ttsd_send_result(ttse_result_event_e event, const void* data, unsigned int d if (0 != ttsd_data_add_sound_data(uid, temp_sound_data)) { SECURE_SLOG(LOG_ERROR, tts_tag(), "[SERVER ERROR] Fail to add sound data : uid(%d)", uid); + if (NULL != temp_sound_data->data) { + free(temp_sound_data->data); + temp_sound_data->data = NULL; + } + + free(temp_sound_data); + temp_sound_data = NULL; + + return TTSD_ERROR_OPERATION_FAILED; } if (event == TTSE_RESULT_EVENT_FINISH) { -- 2.7.4