From cb159f8d8af4556391db8a6875657625733eeb11 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Tue, 5 May 2020 20:19:47 +0200 Subject: [PATCH] Fix crash when exiting server during running mapgen easily reproducible with a high num_emerge_threads and /emergeblocks --- src/emerge.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/emerge.cpp b/src/emerge.cpp index 6e05a45c9..a9fc0a4de 100644 --- a/src/emerge.cpp +++ b/src/emerge.cpp @@ -255,8 +255,9 @@ Mapgen *EmergeManager::getCurrentMapgen() return nullptr; for (u32 i = 0; i != m_threads.size(); i++) { - if (m_threads[i]->isCurrentThread()) - return m_threads[i]->m_mapgen; + EmergeThread *t = m_threads[i]; + if (t->isRunning() && t->isCurrentThread()) + return t->m_mapgen; } return nullptr; @@ -642,8 +643,7 @@ MapBlock *EmergeThread::finishGen(v3s16 pos, BlockMakeData *bmdata, /* Clear generate notifier events */ - Mapgen *mg = m_emerge->getCurrentMapgen(); - mg->gennotify.clearEvents(); + m_mapgen->gennotify.clearEvents(); EMERGE_DBG_OUT("ended up with: " << analyze_block(block));