diff options
author | Chaouki Dhib <chaodhib@gmail.com> | 2021-07-04 18:49:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-04 18:49:30 +0200 |
commit | fdbff48808ee65480bc7915c55d154e6cb46b00e (patch) | |
tree | f60601646193893cdaf6573d99a1431b9dbbc539 | |
parent | db2ad4b4edd3d130c5cdd4f93c2206e0d18f7756 (diff) |
Core/Movement: Fix movement handler crash during ReadMovementInfo check (#26644)
* Core/Movement: Fix movement handler crash during ReadMovementInfo check
* fix noph build
* add an assert
-rw-r--r-- | src/server/game/Server/WorldSession.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 30be1c9e4ad..e3c9ad3569c 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -38,6 +38,7 @@ #include "Map.h" #include "Metric.h" #include "MoveSpline.h" +#include "ObjectAccessor.h" #include "ObjectMgr.h" #include "Opcodes.h" #include "OutdoorPvPMgr.h" @@ -926,7 +927,8 @@ void WorldSession::ReadMovementInfo(WorldPacket &data, MovementInfo* mi) mi->RemoveMovementFlag((maskToRemove)); #endif - Unit* mover = GetGameClient()->GetActivelyMovedUnit(); + Unit* mover = GetPlayer()->GetGUID() == mi->guid ? GetPlayer() : ObjectAccessor::GetUnit(*GetPlayer(), mi->guid); + ASSERT(mover, "if the server allows this unit to be moved by the client, the unit should still exist!"); if (!GetPlayer()->GetVehicleBase() || !(GetPlayer()->GetVehicle()->GetVehicleInfo()->Flags & VEHICLE_FLAG_FIXED_POSITION)) REMOVE_VIOLATING_FLAGS(mi->HasMovementFlag(MOVEMENTFLAG_ROOT), MOVEMENTFLAG_ROOT); |