aboutsummaryrefslogtreecommitdiff
path: root/src/server.cpp
diff options
context:
space:
mode:
authorkwolekr <kwolekr@minetest.net>2014-01-26 01:12:18 -0500
committerkwolekr <kwolekr@minetest.net>2014-01-26 01:12:18 -0500
commit9b978db0c2578b06c5669096e325c1ce70864edc (patch)
tree409944cd4d2ca5b95538bb70dc2168696cc1774b /src/server.cpp
parent6e352e3cbff7d4256657776a7dff828a43d948db (diff)
downloadminetest-9b978db0c2578b06c5669096e325c1ce70864edc.tar.xz
Fix use of previously deallocated EmergeManager
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 =