Fixed coverity issues for tts request 44/224044/2
authorsungrae jo <seongrae.jo@samsung.com>
Thu, 6 Feb 2020 05:14:02 +0000 (14:14 +0900)
committersungrae jo <seongrae.jo@samsung.com>
Thu, 6 Feb 2020 05:14:02 +0000 (14:14 +0900)
Change-Id: I5f9a8425e8f07f2d0b29c9b8d6d20a46cda3ac01
Signed-off-by: sungrae jo <seongrae.jo@samsung.com>
client/vc.c
client/vc_data.cpp
client/vc_data.h
server/vcd_server_data.cpp

index 467120a..3b21cb0 100644 (file)
@@ -2877,7 +2877,6 @@ static void __start_tts_streaming_thread(void* data, Ecore_Thread* thread)
 {
        SLOG(LOG_DEBUG, TAG_VCC, "[SUCCESS] Start tts streaming thread");
 
-       vc_tts_data_s* tts_data = NULL;
        vc_tts_streaming_cb callback = NULL;
        void* user_data = NULL;
 
@@ -2892,7 +2891,8 @@ static void __start_tts_streaming_thread(void* data, Ecore_Thread* thread)
                int cnt = 0;
 
                /* get tts data */
-               ret = vc_data_get_tts_data(&tts_data);
+               vc_tts_data_s *tts_data = NULL;
+               ret = vc_data_get_first_tts_data(&tts_data);
                if (0 != ret || NULL == tts_data) {
                        /* empty queue */
                        SLOG(LOG_DEBUG, TAG_VCC, "[DEBUG] No tts data. Waiting mode");
index 850d2e1..afc475d 100644 (file)
@@ -38,10 +38,8 @@ int vc_data_add_tts_data(vc_tts_data_s* data)
 
        pthread_mutex_lock(&g_tts_data_mutex);
 
-       std::list<vc_tts_data_s*>::iterator iter;
-
        try {
-               iter = g_tts_data.insert(g_tts_data.end(), data);
+               g_tts_data.push_back(data);
        } catch (const std::bad_alloc&) {
                SLOG(LOG_ERROR, TAG_VCC, "[DATA ERROR] Fail to insert tts data (bad alloc)");
                pthread_mutex_unlock(&g_tts_data_mutex);
@@ -54,27 +52,25 @@ int vc_data_add_tts_data(vc_tts_data_s* data)
        return VC_ERROR_NONE;
 }
 
-int vc_data_get_tts_data(vc_tts_data_s** data)
+int vc_data_get_first_tts_data(vc_tts_data_s** data)
 {
+       if (NULL == data) {
+               SLOG(LOG_ERROR, TAG_VCC, "[DATA ERROR] tts data is NULL");
+               return VC_ERROR_INVALID_PARAMETER;
+       }
+
        SLOG(LOG_DEBUG, TAG_VCC, "[DATA] tts_data : %p", *data);
 
        pthread_mutex_lock(&g_tts_data_mutex);
-
-       if (0 == g_tts_data.size()) {
+       if (g_tts_data.empty()) {
                SLOG(LOG_DEBUG, TAG_VCC, "[DATA] There is no tts data");
                *data = NULL;
                pthread_mutex_unlock(&g_tts_data_mutex);
-
-               return -1;
+               return VC_ERROR_OPERATION_FAILED;
        }
 
-       std::list<vc_tts_data_s*>::iterator iter;
-
-       if (!g_tts_data.empty()) {
-               iter = g_tts_data.begin();
-               *data = *iter;
-               g_tts_data.pop_front();
-       }
+       *data = g_tts_data.front();
+       g_tts_data.pop_front();
 
        pthread_mutex_unlock(&g_tts_data_mutex);
 
@@ -97,19 +93,25 @@ int vc_data_clear_tts_data(vc_tts_data_s** data)
 {
        SLOG(LOG_DEBUG, TAG_VCC, "[DATA] clear tts data");
 
+       if (NULL == *data) {
+               SLOG(LOG_ERROR, TAG_VCC, "[DATA ERROR] tts data is NULL");
+               return VC_ERROR_INVALID_PARAMETER;
+       }
+
        pthread_mutex_lock(&g_tts_data_mutex);
 
-       if (NULL != *data) {
-               SLOG(LOG_DEBUG, TAG_VCC, "[DEBUG] event(%d) data(%p) size(%d)", (*data)->event, (*data)->data, (*data)->data_size);
+       vc_tts_data_s *temp = *data;
+       SLOG(LOG_DEBUG, TAG_VCC, "[DEBUG] event(%d) data(%p) size(%d)", temp->event, temp->data, temp->data_size);
 
-               if (NULL != (*data)->data) {
-                       free((*data)->data);
-                       (*data)->data = NULL;
-               }
+       if (temp->data)
+               free(temp->data);
+       temp->data = NULL;
 
-               free(*data);
-               *data = NULL;
-       }
+       if (temp)
+               free(temp);
+       temp = NULL;
+
+       *data = NULL;
 
        pthread_mutex_unlock(&g_tts_data_mutex);
 
@@ -122,21 +124,27 @@ int vc_data_clear_tts_data_by_uttid(int utt_id)
 
        pthread_mutex_lock(&g_tts_data_mutex);
 
-       if (g_tts_data.empty())  {
+       if (g_tts_data.empty()) {
                SLOG(LOG_ERROR, TAG_VCC, "[DATA ERROR] There is no tts data");
                pthread_mutex_unlock(&g_tts_data_mutex);
                return -1;
        }
 
        std::list<vc_tts_data_s*>::iterator iter;
-       for (iter = g_tts_data.begin(); (NULL != *iter && iter != g_tts_data.end()); ++iter) {
-               if (utt_id == (*iter)->utt_id) {
-                       if (NULL != (*iter)->data) {
-                               free((*iter)->data);
-                               (*iter)->data = NULL;
-                       }
-                       g_tts_data.erase(iter);
-                       free(*iter);
+       iter = g_tts_data.begin();
+       while (iter != g_tts_data.end()) {
+               vc_tts_data_s *temp = nullptr;
+               temp = *iter;
+               if (nullptr != temp && utt_id == temp->utt_id) {
+                       iter = g_tts_data.erase(iter);
+
+                       if (temp->data)
+                               free(temp->data);
+                       temp->data = nullptr;
+                       free(temp);
+                       temp = nullptr;
+               } else {
+                       iter++;
                }
        }
 
index 9ca9668..2056023 100644 (file)
@@ -39,7 +39,7 @@ typedef struct {
 
 int vc_data_add_tts_data(vc_tts_data_s* data);
 
-int vc_data_get_tts_data(vc_tts_data_s** data);
+int vc_data_get_first_tts_data(vc_tts_data_s** data);
 
 int vc_data_get_tts_data_size();
 
index 8100709..6f5906e 100644 (file)
@@ -124,11 +124,14 @@ int vcd_data_get_tts_text_data(int uid, vc_tts_text_data_s** data)
                return -1;
        }
 
-       std::list<vc_tts_text_data_s*>::iterator iter;
-       for (iter = g_tts_text_data.begin(); (NULL != *iter && iter != g_tts_text_data.end()); ++iter) {
+       std::list<vc_tts_text_data_s *>::iterator iter;
+       iter = g_tts_text_data.begin();
+       while (iter != g_tts_text_data.end()) {
                if (uid == (*iter)->uid) {
                        *data = *iter;
-                       g_tts_text_data.erase(iter);
+                       iter = g_tts_text_data.erase(iter);
+               } else {
+                       iter++;
                }
        }