From a093d36b3fcddc02ce053b3ad813e9c922420d12 Mon Sep 17 00:00:00 2001 From: levlam Date: Mon, 23 Nov 2020 00:57:52 +0300 Subject: [PATCH] Better fix for ThreadIdGuard destroy after exit. --- tdutils/td/utils/port/detail/ThreadIdGuard.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tdutils/td/utils/port/detail/ThreadIdGuard.cpp b/tdutils/td/utils/port/detail/ThreadIdGuard.cpp index 94efbe020..f04a1072c 100644 --- a/tdutils/td/utils/port/detail/ThreadIdGuard.cpp +++ b/tdutils/td/utils/port/detail/ThreadIdGuard.cpp @@ -28,9 +28,6 @@ class ThreadIdManager { return result; } void unregister_thread(int32 thread_id) { - if (ExitGuard::is_exited()) { - return; - } std::lock_guard guard(mutex_); CHECK(0 < thread_id && thread_id <= max_thread_id_); bool is_inserted = unused_thread_ids_.insert(thread_id).second; @@ -50,7 +47,9 @@ ThreadIdGuard::ThreadIdGuard() { set_thread_id(thread_id_); } ThreadIdGuard::~ThreadIdGuard() { - thread_id_manager.unregister_thread(thread_id_); + if (!ExitGuard::is_exited()) { + thread_id_manager.unregister_thread(thread_id_); + } set_thread_id(0); } } // namespace detail