aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSubv <subv2112@gmail.com>2014-07-02 18:38:22 -0500
committerSubv <subv2112@gmail.com>2014-07-02 18:38:22 -0500
commit15352a9302d3204be055748e6188318df1fef0ee (patch)
tree5225de7712bc90b6ab25a953fbbd578da06bfff3
parentbdc42f663ea2ba715a43c7f65f8d88a1df188e9d (diff)
Fixed an uninitialized value that made the MapUpdater worker threads exit on launch
-rw-r--r--src/server/game/Maps/MapUpdater.cpp4
-rw-r--r--src/server/game/Maps/MapUpdater.h2
2 files changed, 4 insertions, 2 deletions
diff --git a/src/server/game/Maps/MapUpdater.cpp b/src/server/game/Maps/MapUpdater.cpp
index 4ab95d87d48..0a007b3484e 100644
--- a/src/server/game/Maps/MapUpdater.cpp
+++ b/src/server/game/Maps/MapUpdater.cpp
@@ -45,7 +45,7 @@ class MapUpdateRequest
}
};
-MapUpdater::MapUpdater(): pending_requests(0) { }
+MapUpdater::MapUpdater() : pending_requests(0), _cancelationToken(false) {}
MapUpdater::~MapUpdater()
{
@@ -62,6 +62,8 @@ void MapUpdater::activate(size_t num_threads)
void MapUpdater::deactivate()
{
+ _cancelationToken = true;
+
wait();
_queue.Cancel();
diff --git a/src/server/game/Maps/MapUpdater.h b/src/server/game/Maps/MapUpdater.h
index ff1d85a23e9..7b9c4443a54 100644
--- a/src/server/game/Maps/MapUpdater.h
+++ b/src/server/game/Maps/MapUpdater.h
@@ -51,7 +51,7 @@ class MapUpdater
ProducerConsumerQueue <MapUpdateRequest*> _queue;
std::vector<std::thread> _workerThreads;
- std::atomic_bool _cancelationToken;
+ std::atomic<bool> _cancelationToken;
std::mutex _lock;
std::condition_variable _condition;