Skip to content

Commit 121958f

Browse files
committed
Copy processors before update
1 parent 9641852 commit 121958f

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

ElunaEventMgr.cpp

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -192,32 +192,38 @@ EventMgr::EventMgr(Eluna* _E) : E(_E)
192192

193193
EventMgr::~EventMgr()
194194
{
195-
if (!processors.empty())
196-
for (ProcessorSet::const_iterator it = processors.begin(); it != processors.end(); ++it) // loop processors
197-
(*it)->RemoveEvents_internal();
195+
for (auto* processor : processors)
196+
processor->RemoveEvents_internal();
197+
198198
globalProcessor->RemoveEvents_internal();
199199
}
200200

201201
void EventMgr::UpdateProcessors(uint32 diff)
202202
{
203203
if (!processors.empty())
204-
for (ProcessorSet::const_iterator it = processors.begin(); it != processors.end(); ++it) // loop processors
205-
(*it)->Update(diff);
204+
{
205+
// iterate a copy because processors may be destroyed during update (creature removed by a script, etc)
206+
ProcessorSet copy = processors;
207+
208+
for (auto* processor : copy)
209+
processor->Update(diff);
210+
}
211+
206212
globalProcessor->Update(diff);
207213
}
208214

209215
void EventMgr::SetStates(LuaEventState state)
210216
{
211-
if (!processors.empty())
212-
for (ProcessorSet::const_iterator it = processors.begin(); it != processors.end(); ++it) // loop processors
213-
(*it)->SetStates(state);
217+
for (auto* processor : processors)
218+
processor->SetStates(state);
219+
214220
globalProcessor->SetStates(state);
215221
}
216222

217223
void EventMgr::SetState(int eventId, LuaEventState state)
218224
{
219-
if (!processors.empty())
220-
for (ProcessorSet::const_iterator it = processors.begin(); it != processors.end(); ++it) // loop processors
221-
(*it)->SetState(eventId, state);
225+
for (auto* processor : processors)
226+
processor->SetState(eventId, state);
227+
222228
globalProcessor->SetState(eventId, state);
223229
}

0 commit comments

Comments
 (0)