summaryrefslogtreecommitdiff
path: root/src/server.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server.cpp')
-rw-r--r--src/server.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/server.cpp b/src/server.cpp
index 47b11d3da..0ada4d818 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -917,8 +917,9 @@ Server::~Server()
stop();
delete m_thread;
- //shutdown all emerge threads first!
- delete m_emerge;
+ // stop all emerge threads before deleting players that may have
+ // requested blocks to be emerged
+ m_emerge->stopThreads();
/*
Delete clients
@@ -938,6 +939,10 @@ Server::~Server()
// Delete things in the reverse order of creation
delete m_env;
+
+ // N.B. the EmergeManager should be deleted after the Environment since Map
+ // depends on EmergeManager to write its current params to the map meta
+ delete m_emerge;
delete m_rollback;
delete m_banmanager;
delete m_event;
@@ -1684,7 +1689,7 @@ void Server::AsyncRunStep(bool initial_step)
{
counter = 0.0;
- m_emerge->startAllThreads();
+ m_emerge->startThreads();
// Update m_enable_rollback_recording here too
m_enable_rollback_recording =