Skip to content

Commit 4ee643f

Browse files
committedOct 25, 2021
Fixes around emerge handling
1 parent 1e26e45 commit 4ee643f

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed
 

‎src/emerge.cpp

+11-6
Original file line numberDiff line numberDiff line change
@@ -633,12 +633,14 @@ MapBlock *EmergeThread::finishGen(v3s16 pos, BlockMakeData *bmdata,
633633
m_server->setAsyncFatalError(e);
634634
}
635635

636+
EMERGE_DBG_OUT("ended up with: " << analyze_block(block));
637+
636638
/*
637-
Clear generate notifier events
639+
Clear mapgen state
638640
*/
641+
assert(!m_mapgen->generating);
639642
m_mapgen->gennotify.clearEvents();
640-
641-
EMERGE_DBG_OUT("ended up with: " << analyze_block(block));
643+
m_mapgen->vm = nullptr;
642644

643645
/*
644646
Activate the block
@@ -654,19 +656,19 @@ void *EmergeThread::run()
654656
BEGIN_DEBUG_EXCEPTION_HANDLER
655657

656658
v3s16 pos;
659+
std::map<v3s16, MapBlock *> modified_blocks;
657660

658-
m_map = (ServerMap *)&(m_server->m_env->getMap());
661+
m_map = &m_server->m_env->getServerMap();
659662
m_emerge = m_server->m_emerge;
660663
m_mapgen = m_emerge->m_mapgens[id];
661664
enable_mapgen_debug_info = m_emerge->enable_mapgen_debug_info;
662665

663666
try {
664667
while (!stopRequested()) {
665-
std::map<v3s16, MapBlock *> modified_blocks;
666668
BlockEmergeData bedata;
667669
BlockMakeData bmdata;
668670
EmergeAction action;
669-
MapBlock *block;
671+
MapBlock *block = nullptr;
670672

671673
if (!popBlockEmerge(&pos, &bedata)) {
672674
m_queue_event.wait();
@@ -689,6 +691,8 @@ void *EmergeThread::run()
689691
}
690692

691693
block = finishGen(pos, &bmdata, &modified_blocks);
694+
if (!block)
695+
action = EMERGE_ERRORED;
692696
}
693697

694698
runCompletionCallbacks(pos, action, bedata.callbacks);
@@ -698,6 +702,7 @@ void *EmergeThread::run()
698702

699703
if (!modified_blocks.empty())
700704
m_server->SetBlocksNotSent(modified_blocks);
705+
modified_blocks.clear();
701706
}
702707
} catch (VersionMismatchException &e) {
703708
std::ostringstream err;

0 commit comments

Comments
 (0)
Please sign in to comment.