aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Unit
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2013-12-12 09:50:52 +0100
committerShauren <shauren.trinity@gmail.com>2013-12-12 09:50:52 +0100
commit54fd53f7e3575ad24b6daf88f628afdd52b9df04 (patch)
tree3d2e8b93dff4e76ebfac9b143a04969e3716e939 /src/server/game/Entities/Unit
parent385e2dba379d42cf09c9cb36bee728113769d528 (diff)
Core/Movement: Fixed possible invalid memory access
Diffstat (limited to 'src/server/game/Entities/Unit')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp5
-rw-r--r--src/server/game/Entities/Unit/Unit.h6
2 files changed, 6 insertions, 5 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 343adecbd4b..9bd7e1eb512 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -165,7 +165,7 @@ Unit::Unit(bool isWorldObject) :
IsAIEnabled(false), NeedChangeAI(false), LastCharmerGUID(0),
m_ControlledByPlayer(false), movespline(new Movement::MoveSpline()),
i_AI(NULL), i_disabledAI(NULL), m_AutoRepeatFirstCast(false), m_procDeep(0),
- m_removedAurasCount(0), i_motionMaster(this), m_ThreatManager(this),
+ m_removedAurasCount(0), i_motionMaster(new MotionMaster(this)), m_ThreatManager(this),
m_vehicle(NULL), m_vehicleKit(NULL), m_unitTypeMask(UNIT_MASK_NONE),
m_HostileRefManager(this), _lastDamagedTime(0)
{
@@ -293,6 +293,7 @@ Unit::~Unit()
_DeleteRemovedAuras();
+ delete i_motionMaster;
delete m_charmInfo;
delete movespline;
@@ -362,7 +363,7 @@ void Unit::Update(uint32 p_time)
}
UpdateSplineMovement(p_time);
- i_motionMaster.UpdateMotion(p_time);
+ i_motionMaster->UpdateMotion(p_time);
}
bool Unit::haveOffhandWeapon() const
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index e8a318dac6a..d9e49ab6a4d 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -2005,8 +2005,8 @@ class Unit : public WorldObject
static Player* GetPlayer(WorldObject& object, uint64 guid);
static Creature* GetCreature(WorldObject& object, uint64 guid);
- MotionMaster* GetMotionMaster() { return &i_motionMaster; }
- const MotionMaster* GetMotionMaster() const { return &i_motionMaster; }
+ MotionMaster* GetMotionMaster() { return i_motionMaster; }
+ const MotionMaster* GetMotionMaster() const { return i_motionMaster; }
bool IsStopped() const { return !(HasUnitState(UNIT_STATE_MOVING)); }
void StopMoving();
@@ -2187,7 +2187,7 @@ class Unit : public WorldObject
virtual SpellSchoolMask GetMeleeDamageSchoolMask() const;
- MotionMaster i_motionMaster;
+ MotionMaster* i_motionMaster;
uint32 m_reactiveTimer[MAX_REACTIVE];
uint32 m_regenTimer;