Fix UB when a unique effect script adds another unique effect during initialization

This commit is contained in:
Kae 2024-11-21 15:31:28 +11:00
parent 996dc77967
commit a59ff847bc
2 changed files with 8 additions and 6 deletions

View File

@ -1,4 +1,4 @@
[{"op":"merge", "path":"", "value": {
{
"createCharButton" : {
"type" : "button",
"base" : "/interface/title/createcharacter.png",
@ -6,4 +6,4 @@
"position" : [23, 241],
"pressedOffset" : [0, 0]
}
}}]
}

View File

@ -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();