aboutsummaryrefslogtreecommitdiff
path: root/src/game/ObjectAccessor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/ObjectAccessor.cpp')
-rw-r--r--src/game/ObjectAccessor.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/game/ObjectAccessor.cpp b/src/game/ObjectAccessor.cpp
index 631ccc7fe6b..39687e27e49 100644
--- a/src/game/ObjectAccessor.cpp
+++ b/src/game/ObjectAccessor.cpp
@@ -533,10 +533,15 @@ ObjectAccessor::Update(uint32 diff)
// clone the active object list, because update might remove from it
std::set<WorldObject *> activeobjects(i_activeobjects);
- std::set<WorldObject *>::const_iterator itr;
- for(itr = activeobjects.begin(); itr != activeobjects.end(); ++itr)
+ std::set<WorldObject *>::iterator itr, next;
+ for(itr = activeobjects.begin(); itr != activeobjects.end(); itr = next)
{
- (*itr)->GetMap()->resetMarkedCells();
+ next = itr;
+ ++next;
+ if((*itr)->IsInWorld())
+ (*itr)->GetMap()->resetMarkedCells();
+ else
+ activeobjects.erase(itr);
}
Map *map;