diff options
author | kwolekr <kwolekr@minetest.net> | 2014-01-26 01:12:18 -0500 |
---|---|---|
committer | kwolekr <kwolekr@minetest.net> | 2014-01-26 01:12:18 -0500 |
commit | 9b978db0c2578b06c5669096e325c1ce70864edc (patch) | |
tree | 409944cd4d2ca5b95538bb70dc2168696cc1774b /src/server.cpp | |
parent | 6e352e3cbff7d4256657776a7dff828a43d948db (diff) | |
download | minetest-9b978db0c2578b06c5669096e325c1ce70864edc.tar.xz |
Fix use of previously deallocated EmergeManager
Diffstat (limited to 'src/server.cpp')
-rw-r--r-- | src/server.cpp | 11 |
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 = |