Skip to content

Commit ef140eb

Browse files
sapiersapier
sapier
authored and
sapier
committedJan 7, 2015
Fix emerge thread not cleaning up emerge queue on shutdown
1 parent 2b8ed9e commit ef140eb

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed
 

‎src/emerge.cpp

+17
Original file line numberDiff line numberDiff line change
@@ -580,6 +580,23 @@ void *EmergeThread::Thread()
580580
m_server->setAsyncFatalError(err.str());
581581
}
582582

583+
{
584+
JMutexAutoLock queuelock(emerge->queuemutex);
585+
while (!blockqueue.empty())
586+
{
587+
v3s16 p = blockqueue.front();
588+
blockqueue.pop();
589+
590+
std::map<v3s16, BlockEmergeData *>::iterator iter;
591+
iter = emerge->blocks_enqueued.find(p);
592+
if (iter == emerge->blocks_enqueued.end())
593+
continue; //uh oh, queue and map out of sync!!
594+
595+
BlockEmergeData *bedata = iter->second;
596+
delete bedata;
597+
}
598+
}
599+
583600
END_DEBUG_EXCEPTION_HANDLER(errorstream)
584601
log_deregister_thread();
585602
return NULL;

0 commit comments

Comments
 (0)
Please sign in to comment.