diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-11-21 15:31:28 +1100 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2024-11-21 15:31:28 +1100 |
commit | a59ff847bcc064aa78318d5c7161420595abe159 (patch) | |
tree | e22c20fea828dd1be77696b367484936711a9885 /source/game/StarStatusController.cpp | |
parent | 996dc779674932423df865e446fd76a6167038c1 (diff) |
Fix UB when a unique effect script adds another unique effect during initialization
Diffstat (limited to 'source/game/StarStatusController.cpp')
-rw-r--r-- | source/game/StarStatusController.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/source/game/StarStatusController.cpp b/source/game/StarStatusController.cpp index 325fc17..26c83d0 100644 --- a/source/game/StarStatusController.cpp +++ b/source/game/StarStatusController.cpp @@ -410,8 +410,9 @@ void StatusController::init(Entity* parentEntity, ActorMovementController* movem if (m_parentEntity->isMaster()) { initPrimaryScript(); - for (auto& p : m_uniqueEffects) - initUniqueEffectScript(p.second); + for (auto& p : m_uniqueEffects.keys()) + if (auto effect = m_uniqueEffects.ptr(p)) + initUniqueEffectScript(*effect); } m_environmentStatusEffectUpdateTimer.reset(); @@ -421,8 +422,9 @@ void StatusController::uninit() { m_parentEntity = nullptr; m_movementController = nullptr; - for (auto& p : m_uniqueEffects) - uninitUniqueEffectScript(p.second); + for (auto& p : m_uniqueEffects.keys()) + if (auto effect = m_uniqueEffects.ptr(p)) + uninitUniqueEffectScript(*effect); uninitPrimaryScript(); m_recentHitsGiven.reset(); |