Core/Threat: fix a potential super edge case iterator invalidation

This commit is contained in:
Treeston
2018-01-09 23:42:22 +01:00
parent a23c97a0fc
commit 3dcd49ef90

View File

@@ -333,7 +333,9 @@ void ThreatManager::AddThreat(Unit* target, float amount, SpellInfo const* spell
if (!redirInfo.empty())
{
float const origAmount = amount;
for (auto const& pair : redirInfo) // (victim,pct)
// intentional copy - there's a nested AddThreat call further down that might cause AI calls which cast spells
auto const redirects = redirInfo;
for (auto const& pair : redirects) // (victim,pct)
{
Unit* redirTarget = nullptr;
auto it = _myThreatListEntries.find(pair.first); // try to look it up in our threat list first (faster)