From ef140eb7b0339d180cd38e3a98f5aa8abe604765 Mon Sep 17 00:00:00 2001 From: sapier Date: Sun, 4 Jan 2015 01:01:30 +0100 Subject: [PATCH] Fix emerge thread not cleaning up emerge queue on shutdown --- src/emerge.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/emerge.cpp b/src/emerge.cpp index 8d8186126..e81793ff8 100644 --- a/src/emerge.cpp +++ b/src/emerge.cpp @@ -580,6 +580,23 @@ void *EmergeThread::Thread() m_server->setAsyncFatalError(err.str()); } + { + JMutexAutoLock queuelock(emerge->queuemutex); + while (!blockqueue.empty()) + { + v3s16 p = blockqueue.front(); + blockqueue.pop(); + + std::map::iterator iter; + iter = emerge->blocks_enqueued.find(p); + if (iter == emerge->blocks_enqueued.end()) + continue; //uh oh, queue and map out of sync!! + + BlockEmergeData *bedata = iter->second; + delete bedata; + } + } + END_DEBUG_EXCEPTION_HANDLER(errorstream) log_deregister_thread(); return NULL;