From 0301f3d2757e2ce9f7a6993b7a2eb3017a4b5a72 Mon Sep 17 00:00:00 2001 From: Daria Volvenkova Date: Thu, 8 Dec 2016 14:53:06 +0300 Subject: [PATCH] Fixed map tests crash on traffic manager destruction. --- map/framework.cpp | 1 + map/traffic_manager.cpp | 13 ++++++++----- map/traffic_manager.hpp | 4 ---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/map/framework.cpp b/map/framework.cpp index 2d6723612f..a19325d01f 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -461,6 +461,7 @@ Framework::Framework() Framework::~Framework() { + m_trafficManager.Teardown(); DestroyDrapeEngine(); m_model.SetOnMapDeregisteredCallback(nullptr); } diff --git a/map/traffic_manager.cpp b/map/traffic_manager.cpp index 9dce5d58dd..9bab47deb6 100644 --- a/map/traffic_manager.cpp +++ b/map/traffic_manager.cpp @@ -52,21 +52,24 @@ TrafficManager::TrafficManager(GetMwmsByRectFn const & getMwmsByRectFn, size_t m TrafficManager::~TrafficManager() { - ASSERT(m_isTeardowned, ()); +#ifdef DEBUG + { + lock_guard lock(m_mutex); + ASSERT(!m_isRunning, ()); + } +#endif } void TrafficManager::Teardown() { { lock_guard lock(m_mutex); + if (!m_isRunning) + return; m_isRunning = false; } m_condition.notify_one(); m_thread.join(); - -#ifdef DEBUG - m_isTeardowned = true; -#endif } void TrafficManager::SetStateListener(TrafficStateChangedFn const & onStateChangedFn) diff --git a/map/traffic_manager.hpp b/map/traffic_manager.hpp index 651d791283..e2ad3ce7d1 100644 --- a/map/traffic_manager.hpp +++ b/map/traffic_manager.hpp @@ -141,8 +141,4 @@ private: vector m_requestedMwms; mutex m_mutex; threads::SimpleThread m_thread; - -#ifdef DEBUG - bool m_isTeardowned = false; -#endif };