From 948436e57eb1267b388ed31e912c5697fbb79935 Mon Sep 17 00:00:00 2001 From: SChernykh Date: Fri, 5 Aug 2022 15:27:39 +0200 Subject: [PATCH] Fixed coverity issue --- src/side_chain.cpp | 45 ++++++++++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/src/side_chain.cpp b/src/side_chain.cpp index dc60c27..368b5f2 100644 --- a/src/side_chain.cpp +++ b/src/side_chain.cpp @@ -2011,29 +2011,36 @@ void SideChain::finish_precalc() return; } + try { - MutexLock lock(m_precalcJobsMutex); - for (PrecalcJob* job : m_precalcJobs) { - delete job; + { + MutexLock lock(m_precalcJobsMutex); + for (PrecalcJob* job : m_precalcJobs) { + delete job; + } + m_precalcJobs.clear(); + m_precalcJobs.shrink_to_fit(); + uv_cond_broadcast(&m_precalcJobsCond); } - m_precalcJobs.clear(); - m_precalcJobs.shrink_to_fit(); - uv_cond_broadcast(&m_precalcJobsCond); + + for (std::thread& t : m_precalcWorkers) { + t.join(); + } + m_precalcWorkers.clear(); + m_precalcWorkers.shrink_to_fit(); + + delete m_uniquePrecalcInputs; + m_uniquePrecalcInputs = nullptr; + + uv_mutex_destroy(&m_precalcJobsMutex); + uv_cond_destroy(&m_precalcJobsCond); + + LOGINFO(4, "pre-calculation workers stopped"); } - - for (std::thread& t : m_precalcWorkers) { - t.join(); + catch (const std::exception& e) + { + LOGERR(1, "exception in finish_precalc(): " << e.what()); } - m_precalcWorkers.clear(); - m_precalcWorkers.shrink_to_fit(); - - delete m_uniquePrecalcInputs; - m_uniquePrecalcInputs = nullptr; - - uv_mutex_destroy(&m_precalcJobsMutex); - uv_cond_destroy(&m_precalcJobsCond); - - LOGINFO(4, "pre-calculation workers stopped"); } } // namespace p2pool