1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2024-12-29 12:20:41 +00:00

Prevent iterator invalidation when cleaning up summons

This commit is contained in:
Evil Eye 2021-08-28 11:06:47 +02:00
parent dc1fe62dde
commit 161e042e2a
2 changed files with 4 additions and 2 deletions

View File

@ -277,8 +277,9 @@ namespace MWGui
auto it = std::find_if(summons.begin(), summons.end(), [&] (const auto& entry) { return entry.second == creatureStats.getActorId(); });
if(it != summons.end())
{
MWMechanics::purgeSummonEffect(summoner, *it);
auto summon = *it;
summons.erase(it);
MWMechanics::purgeSummonEffect(summoner, summon);
break;
}
}

View File

@ -125,8 +125,9 @@ namespace MWMechanics
if (!ptr.isEmpty() && ptr.getClass().getCreatureStats(ptr).isDead() && ptr.getClass().getCreatureStats(ptr).isDeathAnimationFinished())
{
// Purge the magic effect so a new creature can be summoned if desired
purgeSummonEffect(summoner, *it);
auto summon = *it;
creatureMap.erase(it++);
purgeSummonEffect(summoner, summon);
}
else
++it;