1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-24 22:14:36 +02:00

NKAI: a few crash/hang fixes

This commit is contained in:
Andrii Danylchenko 2022-11-03 21:16:49 +02:00
parent ae1d2c50e2
commit 233b850daf
4 changed files with 7 additions and 3 deletions

View File

@ -774,8 +774,10 @@ void AIGateway::makeTurn()
retrieveVisitableObjs();
}
#if NKAI_TRACE_LEVEL == 0
try
{
#endif
nullkiller->makeTurn();
//for debug purpose
@ -784,6 +786,7 @@ void AIGateway::makeTurn()
if (h->movement)
logAi->warn("Hero %s has %d MP left", h->name, h->movement);
}
#if NKAI_TRACE_LEVEL == 0
}
catch (boost::thread_interrupted & e)
{
@ -795,6 +798,7 @@ void AIGateway::makeTurn()
{
logAi->debug("Making turn thread has caught an exception: %s", e.what());
}
#endif
endTurn();
}

View File

@ -307,7 +307,7 @@ void Nullkiller::executeTask(Goals::TTask task)
{
logAi->trace("Task %s completed", task->toString());
}
catch(std::exception & e)
catch(cannotFulfillGoalException & e)
{
logAi->debug("Failed to realize subgoal of type %s, I will stop.", taskDescr);
logAi->debug("The error message was: %s", e.what());

View File

@ -1086,7 +1086,7 @@ void AINodeStorage::calculateTownPortal(
for(const CGTownInstance * targetTown : towns)
{
// TODO: allow to hide visiting hero in garrison
if(targetTown->visitingHero)
if(targetTown->visitingHero && maskMap.find(targetTown->visitingHero.get()) != maskMap.end())
{
auto basicMask = maskMap.at(targetTown->visitingHero.get());
bool heroIsInChain = (actor->chainMask & basicMask) != 0;

View File

@ -339,7 +339,7 @@ void CPathfinder::calculatePaths()
auto hlp = config->getOrCreatePathfinderHelper(source, gs);
if(hlp->isHeroPatrolLocked())
break;
continue;
pq.push(initialNode);
}