diff options
author | DDuarte <dnpd.dd@gmail.com> | 2014-08-02 19:30:55 +0100 |
---|---|---|
committer | DDuarte <dnpd.dd@gmail.com> | 2014-08-02 19:30:55 +0100 |
commit | cb453fa093d205cc0539891670c04b4733d7e735 (patch) | |
tree | 412e6ddc5890aaacc95c65bc0e3d463c9db27f61 /src | |
parent | 56c0581e554e305917099d95a60fcedffeab96d8 (diff) |
Core/Shared: Fix world and auth crash on shutdown (PCQ & DbWorker)
Fixes #12704
Diffstat (limited to 'src')
-rw-r--r-- | src/server/shared/Database/DatabaseWorker.cpp | 2 | ||||
-rw-r--r-- | src/server/shared/Threading/ProducerConsumerQueue.h | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/src/server/shared/Database/DatabaseWorker.cpp b/src/server/shared/Database/DatabaseWorker.cpp index ca48ebdd811..e130429c8d0 100644 --- a/src/server/shared/Database/DatabaseWorker.cpp +++ b/src/server/shared/Database/DatabaseWorker.cpp @@ -50,7 +50,7 @@ void DatabaseWorker::WorkerThread() _queue->WaitAndPop(operation); - if (_cancelationToken) + if (_cancelationToken || !operation) return; operation->SetConnection(_connection); diff --git a/src/server/shared/Threading/ProducerConsumerQueue.h b/src/server/shared/Threading/ProducerConsumerQueue.h index 1fee1d0685f..accb0aebb11 100644 --- a/src/server/shared/Threading/ProducerConsumerQueue.h +++ b/src/server/shared/Threading/ProducerConsumerQueue.h @@ -58,7 +58,7 @@ public: { std::lock_guard<std::mutex> lock(_queueLock); - if (_queue.empty()) + if (_queue.empty() || _shutdown) return false; value = _queue.front(); @@ -77,7 +77,7 @@ public: _condition.wait(lock); } - if (_queue.empty()) + if (_queue.empty() || _shutdown) return; value = _queue.front(); |