Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/game/StarStatusController.cpp
diff options
context:
space:
mode:
authorKae <80987908+Novaenia@users.noreply.github.com>2024-11-21 15:31:28 +1100
committerKae <80987908+Novaenia@users.noreply.github.com>2024-11-21 15:31:28 +1100
commita59ff847bcc064aa78318d5c7161420595abe159 (patch)
treee22c20fea828dd1be77696b367484936711a9885 /source/game/StarStatusController.cpp
parent996dc779674932423df865e446fd76a6167038c1 (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.cpp10
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();