aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjackpoz <giacomopoz@gmail.com>2016-06-21 22:19:31 +0200
committerjoschiwald <joschiwald.trinity@gmail.com>2017-02-01 22:53:21 +0100
commit2355facafebc3e32ff571cc09891aea3bebf2126 (patch)
treedf89d2d315ded0eef30020357e6a04315533b43a /src
parent40054ba475407c56246227d55e21573c22978a2a (diff)
Core/Creature: Fix assertion triggered
Fix assertion triggered when a Creature was summoned at an invalid position with Auras loaded as Creature addons. Fix #17415 (cherry picked from commit 75319e4a6887f23562ac141e4494427793962b00)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index c67780b8575..170ab092520 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -869,15 +869,17 @@ bool Creature::Create(ObjectGuid::LowType guidlow, Map* map, uint32 /*phaseMask*
//! returning correct zone id for selecting OutdoorPvP/Battlefield script
Relocate(x, y, z, ang);
- if (!CreateFromProto(guidlow, entry, data, vehId))
- return false;
-
+ // Check if the position is valid before calling CreateFromProto(), otherwise we might add Auras to Creatures at
+ // invalid position, triggering a crash about Auras not removed in the destructor
if (!IsPositionValid())
{
TC_LOG_ERROR("entities.unit", "Creature::Create(): given coordinates for creature (guidlow " UI64FMTD ", entry %d) are not valid (X: %f, Y: %f, Z: %f, O: %f)", guidlow, entry, x, y, z, ang);
return false;
}
+ if (!CreateFromProto(guidlow, entry, data, vehId))
+ return false;
+
switch (GetCreatureTemplate()->rank)
{
case CREATURE_ELITE_RARE: