From 58ef5ed30b9d8875ffb273003567a294d3cc9069 Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Mon, 19 Feb 2024 16:55:57 +0900 Subject: [PATCH] Fix defects detected by static analysis tool Change-Id: I1782a8acc3e7e4dbdebaa2fd314aec56233592bf --- src/service_ipc_dbus.cpp | 1 - wakeup-manager/src/wakeup_audio_manager.cpp | 12 +++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/service_ipc_dbus.cpp b/src/service_ipc_dbus.cpp index 0e30c72..fa51a91 100644 --- a/src/service_ipc_dbus.cpp +++ b/src/service_ipc_dbus.cpp @@ -1364,7 +1364,6 @@ static Eina_Bool listener_event_callback(void* data, Ecore_Fd_Handler *fd_handle num_messages++; } - print_duration(num_messages, started); return ECORE_CALLBACK_RENEW; } diff --git a/wakeup-manager/src/wakeup_audio_manager.cpp b/wakeup-manager/src/wakeup_audio_manager.cpp index 0d6bb19..991a054 100644 --- a/wakeup-manager/src/wakeup_audio_manager.cpp +++ b/wakeup-manager/src/wakeup_audio_manager.cpp @@ -340,9 +340,19 @@ void CAudioManager::streaming_audio_data_thread_func(long long start_time) lock.lock(); end = mAudioData.end(); + + /* Check if the lead variable is still valid, just in case the mAudioData variable + * got cleared by another thread before the lock gets acquired again. */ + bool is_lead_valid = false; + for (auto it = mAudioData.begin();is_lead_valid == false && it != end;++it) { + if (lead == it) { + is_lead_valid = true; + } + } + vector observers = mObservers; - if (lead != end) { + if (is_lead_valid && lead != end) { iter = lead; mas_speech_data speech_data = iter->data; -- 2.7.4