aboutsummaryrefslogtreecommitdiff
path: root/src/game/FleeingMovementGenerator.cpp
diff options
context:
space:
mode:
authormegamage <none@none>2009-02-10 10:03:39 -0600
committermegamage <none@none>2009-02-10 10:03:39 -0600
commit31f49932647433b484bf91a9cc5a56fd44473459 (patch)
tree685350874e7c3973333543f00c646fb14fb884b9 /src/game/FleeingMovementGenerator.cpp
parent22855d6e79e5a7007845b5d6a452aa94cc020b9c (diff)
[7260] Fixed access to uninitilized fields in FleeingMovementGenerator and Creature::IsOutOfThreatArea. Author: VladimirMangos
--HG-- branch : trunk
Diffstat (limited to 'src/game/FleeingMovementGenerator.cpp')
-rw-r--r--src/game/FleeingMovementGenerator.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/game/FleeingMovementGenerator.cpp b/src/game/FleeingMovementGenerator.cpp
index c64b653d5e9..9f705074d75 100644
--- a/src/game/FleeingMovementGenerator.cpp
+++ b/src/game/FleeingMovementGenerator.cpp
@@ -301,19 +301,26 @@ FleeingMovementGenerator<T>::Initialize(T &owner)
if(!&owner)
return;
- Unit * fright = ObjectAccessor::GetUnit(owner, i_frightGUID);
- if(!fright)
- return;
-
_Init(owner);
owner.CastStop();
owner.addUnitState(UNIT_STAT_FLEEING);
owner.SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_FLEEING);
owner.SetUInt64Value(UNIT_FIELD_TARGET, 0);
owner.RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
- i_caster_x = fright->GetPositionX();
- i_caster_y = fright->GetPositionY();
- i_caster_z = fright->GetPositionZ();
+
+ if(Unit * fright = ObjectAccessor::GetUnit(owner, i_frightGUID))
+ {
+ i_caster_x = fright->GetPositionX();
+ i_caster_y = fright->GetPositionY();
+ i_caster_z = fright->GetPositionZ();
+ }
+ else
+ {
+ i_caster_x = owner.GetPositionX();
+ i_caster_y = owner.GetPositionY();
+ i_caster_z = owner.GetPositionZ();
+ }
+
i_only_forward = true;
i_cur_angle = 0.0f;
i_last_distance_from_caster = 0.0f;