From 7a79886922cce05081aea982c1a7c98cb552fdfe Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Thu, 21 Nov 2013 13:54:01 +0100 Subject: [PATCH] Fix deadlock in WorkQueue::Enqueue. Fixes #5120 --- lib/base/workqueue.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/base/workqueue.cpp b/lib/base/workqueue.cpp index 3d08f9dc9..4b1383dfe 100644 --- a/lib/base/workqueue.cpp +++ b/lib/base/workqueue.cpp @@ -51,8 +51,10 @@ void WorkQueue::Enqueue(const WorkCallback& item) ASSERT(!m_Stopped); - while (m_Items.size() >= m_MaxItems) - m_CV.wait(lock); + if (boost::this_thread::get_id() != GetThreadId()) { + while (m_Items.size() >= m_MaxItems) + m_CV.wait(lock); + } m_Items.push_back(item); m_CV.notify_all();