Fix memory leak 97/193097/2
authorsooyeon.kim <sooyeon.kim@samsung.com>
Wed, 14 Nov 2018 11:55:07 +0000 (20:55 +0900)
committersooyeon.kim <sooyeon.kim@samsung.com>
Thu, 15 Nov 2018 02:25:02 +0000 (11:25 +0900)
Change-Id: Ifbcec791108de7aeaabc6479d668dc63374e7d56
Signed-off-by: sooyeon.kim <sooyeon.kim@samsung.com>
server/ttsd_data.cpp
server/ttsd_server.c

index bb17c7d..47e335b 100644 (file)
@@ -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);
index 14dd166..7f2fe64 100644 (file)
@@ -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) {