diff options
author | w12x <none@none> | 2008-10-27 15:28:04 -0500 |
---|---|---|
committer | w12x <none@none> | 2008-10-27 15:28:04 -0500 |
commit | dd977765014498fd97dd89f68738e5fa2306e465 (patch) | |
tree | 430b12a23424896c2cb2a5aaaef8192030f12888 /src/game/ObjectAccessor.cpp | |
parent | 1b820f93ebadc6f253a0b1baa958abe3ab482e2d (diff) |
[svn] * Fixed startup error flood if creature model id is 0
* Fixed totems using proper model ids broken after recent change
* Set pet grid activity state to that of caster upon summoning
* Fix a possible crash in ObjectAccessor
note to self: don't commit anything without 3 days testing. ever. after this one ofc.
--HG--
branch : trunk
Diffstat (limited to 'src/game/ObjectAccessor.cpp')
-rw-r--r-- | src/game/ObjectAccessor.cpp | 11 |
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; |