From 234a4d97077113ca8cf04def1687730da22408a8 Mon Sep 17 00:00:00 2001 From: QAston Date: Tue, 10 Mar 2009 23:20:01 +0100 Subject: Fix crash. --HG-- branch : trunk --- src/game/Unit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 80d8c0ac0ef..d7b3305c55d 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -4413,7 +4413,7 @@ bool Unit::RemoveNoStackAurasDueToAura(Aura *Aur) // Remove all auras by aura caster for (uint8 a=0;a<3;++a) { - spellEffectPair spair = spellEffectPair((*i).second->GetId(), a); + spellEffectPair spair = spellEffectPair(i_spellId, a); for(AuraMap::iterator iter = m_Auras.lower_bound(spair); iter != m_Auras.upper_bound(spair);) { if(iter->second->GetCasterGUID()==caster) -- cgit v1.2.3 From 3c5a92dbe0a1f140bbc7e1d9497e9e5d0d09e514 Mon Sep 17 00:00:00 2001 From: megamage Date: Wed, 11 Mar 2009 11:48:57 -0600 Subject: *Fix a crash bug. --HG-- branch : trunk --- src/game/GridNotifiers.cpp | 2 +- src/game/GridNotifiers.h | 18 ++++++++++++++---- src/game/GridNotifiersImpl.h | 2 +- src/game/Map.cpp | 8 +++----- 4 files changed, 19 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/game/GridNotifiers.cpp b/src/game/GridNotifiers.cpp index 13fa66308e5..fcb4e376b26 100644 --- a/src/game/GridNotifiers.cpp +++ b/src/game/GridNotifiers.cpp @@ -43,7 +43,7 @@ VisibleChangesNotifier::Visit(PlayerMapType &m) } void -PlayerRelocationNotifier::Notify() +PlayerVisibilityNotifier::Notify() { // at this moment i_clientGUIDs have guids that not iterate at grid level checks // but exist one case when this possible and object not out of range: transports diff --git a/src/game/GridNotifiers.h b/src/game/GridNotifiers.h index bdd40a3f72f..8e427366f1a 100644 --- a/src/game/GridNotifiers.h +++ b/src/game/GridNotifiers.h @@ -38,7 +38,7 @@ class Player; namespace Trinity { - struct TRINITY_DLL_DECL PlayerRelocationNotifier + struct TRINITY_DLL_DECL PlayerVisibilityNotifier { Player &i_player; UpdateData i_data; @@ -46,17 +46,27 @@ namespace Trinity Player::ClientGUIDs i_clientGUIDs; std::set i_visibleNow; - PlayerRelocationNotifier(Player &player) : i_player(player),i_clientGUIDs(player.m_clientGUIDs) {} + PlayerVisibilityNotifier(Player &player) : i_player(player),i_clientGUIDs(player.m_clientGUIDs) {} template inline void Visit(GridRefManager &); - #ifdef WIN32 + /*#ifdef WIN32 template<> inline void Visit(PlayerMapType &); template<> inline void Visit(CreatureMapType &); - #endif + #endif*/ void Notify(void); }; + struct TRINITY_DLL_DECL PlayerRelocationNotifier : public PlayerVisibilityNotifier + { + PlayerRelocationNotifier(Player &player) : PlayerVisibilityNotifier(player) {} + template inline void Visit(GridRefManager &m) { PlayerVisibilityNotifier::Visit(m); } + #ifdef WIN32 + template<> inline void Visit(PlayerMapType &); + template<> inline void Visit(CreatureMapType &); + #endif + }; + struct TRINITY_DLL_DECL CreatureRelocationNotifier { Creature &i_creature; diff --git a/src/game/GridNotifiersImpl.h b/src/game/GridNotifiersImpl.h index 7131b6281f4..4fe61076b18 100644 --- a/src/game/GridNotifiersImpl.h +++ b/src/game/GridNotifiersImpl.h @@ -67,7 +67,7 @@ inline void CreatureCreatureRelocationWorker(Creature* c1, Creature* c2) template inline void -Trinity::PlayerRelocationNotifier::Visit(GridRefManager &m) +Trinity::PlayerVisibilityNotifier::Visit(GridRefManager &m) { for(typename GridRefManager::iterator iter = m.begin(); iter != m.end(); ++iter) { diff --git a/src/game/Map.cpp b/src/game/Map.cpp index 9c2521ca3bd..fbe87986903 100644 --- a/src/game/Map.cpp +++ b/src/game/Map.cpp @@ -754,11 +754,9 @@ void Map::Update(const uint32 &t_diff) if(obj->isType(TYPEMASK_UNIT)) { if(!((Unit*)obj)->GetSharedVisionList().empty()) - for(SharedVisionList::const_iterator itr = ((Unit*)obj)->GetSharedVisionList().begin(); itr != ((Unit*)obj)->GetSharedVisionList().end();) + for(SharedVisionList::const_iterator itr = ((Unit*)obj)->GetSharedVisionList().begin(); itr != ((Unit*)obj)->GetSharedVisionList().end(); ++itr) { - Player *player = *itr; - ++itr; - Trinity::PlayerRelocationNotifier notifier(*player); + Trinity::PlayerVisibilityNotifier notifier(**itr); VisitAll(obj->GetPositionX(), obj->GetPositionY(), World::GetMaxVisibleDistance(), notifier); notifier.Notify(); } @@ -768,7 +766,7 @@ void Map::Update(const uint32 &t_diff) if(Unit *caster = ((DynamicObject*)obj)->GetCaster()) if(caster->GetTypeId() == TYPEID_PLAYER && caster->GetUInt64Value(PLAYER_FARSIGHT) == obj->GetGUID()) { - Trinity::PlayerRelocationNotifier notifier(*((Player*)caster)); + Trinity::PlayerVisibilityNotifier notifier(*((Player*)caster)); VisitAll(obj->GetPositionX(), obj->GetPositionY(), World::GetMaxVisibleDistance(), notifier); notifier.Notify(); } -- cgit v1.2.3