From: sfan5 Date: Tue, 5 May 2020 18:19:47 +0000 (+0200) Subject: Fix crash when exiting server during running mapgen X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=cb159f8d8af4556391db8a6875657625733eeb11;p=oweals%2Fminetest.git Fix crash when exiting server during running mapgen easily reproducible with a high num_emerge_threads and /emergeblocks --- 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));