diff options
| author | Treeston <treeston.mmoc@gmail.com> | 2018-01-09 23:42:22 +0100 | 
|---|---|---|
| committer | Treeston <treeston.mmoc@gmail.com> | 2018-01-09 23:42:22 +0100 | 
| commit | 3dcd49ef9015582be304e2521e13052c68b917d6 (patch) | |
| tree | 0ffea820ce429b39e6d915c68c1b9074b803f28f /src/server/game/Combat/ThreatManager.cpp | |
| parent | a23c97a0fcc53e5da0bee5fc033dd3748774c337 (diff) | |
Core/Threat: fix a potential super edge case iterator invalidation
Diffstat (limited to 'src/server/game/Combat/ThreatManager.cpp')
| -rw-r--r-- | src/server/game/Combat/ThreatManager.cpp | 4 | 
1 files changed, 3 insertions, 1 deletions
| diff --git a/src/server/game/Combat/ThreatManager.cpp b/src/server/game/Combat/ThreatManager.cpp index 3c71fc9acff..b7f1aec9854 100644 --- a/src/server/game/Combat/ThreatManager.cpp +++ b/src/server/game/Combat/ThreatManager.cpp @@ -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) | 
