Core: Added ABORT() macro to prevent the usage of ASSERT(false) as a quick hack to crash the core misusing assert
This commit is contained in:
1 parent
ff71da2b05
commit
7b245a0b6b
23 files changed
+62
-55
No files matched your search
@@ -230,7 +230,7 @@ namespace MMAP
|
||||
// if the grid is later reloaded, dtNavMesh::addTile will return error but no extra memory is used
|
||||
// we cannot recover from this error - assert out
|
||||
TC_LOG_ERROR("maps", "MMAP:unloadMap: Could not unload %03u%02i%02i.mmtile from navmesh", mapId, x, y);
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -29,8 +29,7 @@ void Assert(char const* file, int line, char const* function, char const* messag
|
||||
{
|
||||
fprintf(stderr, "\n%s:%i in %s ASSERTION FAILED:\n %s\n",
|
||||
file, line, function, message);
|
||||
*((volatile int*)NULL) = 0;
|
||||
exit(1);
|
||||
abort();
|
||||
}
|
||||
|
||||
void Assert(char const* file, int line, char const* function, char const* message, char const* format, ...)
|
||||
@@ -44,8 +43,7 @@ void Assert(char const* file, int line, char const* function, char const* messag
|
||||
fflush(stderr);
|
||||
|
||||
va_end(args);
|
||||
*((volatile int*)NULL) = 0;
|
||||
exit(1);
|
||||
abort();
|
||||
}
|
||||
|
||||
void Fatal(char const* file, int line, char const* function, char const* message)
|
||||
@@ -54,16 +52,14 @@ void Fatal(char const* file, int line, char const* function, char const* message
|
||||
file, line, function, message);
|
||||
|
||||
std::this_thread::sleep_for(std::chrono::seconds(10));
|
||||
*((volatile int*)NULL) = 0;
|
||||
exit(1);
|
||||
abort();
|
||||
}
|
||||
|
||||
void Error(char const* file, int line, char const* function, char const* message)
|
||||
{
|
||||
fprintf(stderr, "\n%s:%i in %s ERROR:\n %s\n",
|
||||
file, line, function, message);
|
||||
*((volatile int*)NULL) = 0;
|
||||
exit(1);
|
||||
abort();
|
||||
}
|
||||
|
||||
void Warning(char const* file, int line, char const* function, char const* message)
|
||||
@@ -72,4 +68,11 @@ void Warning(char const* file, int line, char const* function, char const* messa
|
||||
file, line, function, message);
|
||||
}
|
||||
|
||||
void Abort(char const* file, int line, char const* function)
|
||||
{
|
||||
fprintf(stderr, "\n%s:%i in %s ABORTED\n",
|
||||
file, line, function);
|
||||
abort();
|
||||
}
|
||||
|
||||
} // namespace Trinity
|
||||
@@ -29,6 +29,8 @@ namespace Trinity
|
||||
DECLSPEC_NORETURN void Fatal(char const* file, int line, char const* function, char const* message) ATTR_NORETURN;
|
||||
|
||||
DECLSPEC_NORETURN void Error(char const* file, int line, char const* function, char const* message) ATTR_NORETURN;
|
||||
|
||||
DECLSPEC_NORETURN void Abort(char const* file, int line, char const* function) ATTR_NORETURN;
|
||||
|
||||
void Warning(char const* file, int line, char const* function, char const* message);
|
||||
|
||||
@@ -46,8 +48,10 @@ namespace Trinity
|
||||
#define WPFatal(cond, msg) ASSERT_BEGIN do { if (!(cond)) Trinity::Fatal(__FILE__, __LINE__, __FUNCTION__, (msg)); } while(0) ASSERT_END
|
||||
#define WPError(cond, msg) ASSERT_BEGIN do { if (!(cond)) Trinity::Error(__FILE__, __LINE__, __FUNCTION__, (msg)); } while(0) ASSERT_END
|
||||
#define WPWarning(cond, msg) ASSERT_BEGIN do { if (!(cond)) Trinity::Warning(__FILE__, __LINE__, __FUNCTION__, (msg)); } while(0) ASSERT_END
|
||||
#define WPAbort() ASSERT_BEGIN do { Trinity::Abort(__FILE__, __LINE__, __FUNCTION__); } while(0) ASSERT_END
|
||||
|
||||
#define ASSERT WPAssert
|
||||
#define ABORT WPAbort
|
||||
|
||||
template <typename T> inline T* ASSERT_NOTNULL(T* pointer)
|
||||
{
|
||||
|
||||
@@ -537,7 +537,7 @@ bool CompareValues(ComparisionType type, T val1, T val2)
|
||||
return val1 <= val2;
|
||||
default:
|
||||
// incorrect parameter
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,7 +145,7 @@ void RealmList::UpdateRealms(bool init)
|
||||
catch (std::exception& ex)
|
||||
{
|
||||
TC_LOG_ERROR("server.authserver", "Realmlist::UpdateRealms has thrown an exception: %s", ex.what());
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
}
|
||||
while (result->NextRow());
|
||||
|
||||
@@ -482,7 +482,7 @@ class DatabaseWorkerPool
|
||||
else if (type == IDX_SYNCH)
|
||||
t = new T(*_connectionInfo);
|
||||
else
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
|
||||
_connections[type][i] = t;
|
||||
++_connectionCount[type];
|
||||
|
||||
@@ -309,7 +309,7 @@ int32 BattlegroundAB::_GetNodeNameId(uint8 node)
|
||||
case BG_AB_NODE_LUMBER_MILL:return LANG_BG_AB_NODE_LUMBER_MILL;
|
||||
case BG_AB_NODE_GOLD_MINE: return LANG_BG_AB_NODE_GOLD_MINE;
|
||||
default:
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -789,7 +789,7 @@ BG_AV_Nodes BattlegroundAV::GetNodeThroughObject(uint32 object)
|
||||
if (object == BG_AV_OBJECT_FLAG_N_SNOWFALL_GRAVE)
|
||||
return BG_AV_NODES_SNOWFALL_GRAVE;
|
||||
TC_LOG_ERROR("bg.battleground", "BattlegroundAV: ERROR! GetPlace got a wrong object :(");
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
return BG_AV_Nodes(0);
|
||||
}
|
||||
|
||||
@@ -827,7 +827,7 @@ uint32 BattlegroundAV::GetObjectThroughNode(BG_AV_Nodes node)
|
||||
else if (m_Nodes[node].Owner == AV_NEUTRAL_TEAM)
|
||||
return BG_AV_OBJECT_FLAG_N_SNOWFALL_GRAVE;
|
||||
TC_LOG_ERROR("bg.battleground", "BattlegroundAV: Error! GetPlaceNode couldn't resolve node %i", node);
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1402,22 +1402,22 @@ void BattlegroundAV::AssaultNode(BG_AV_Nodes node, uint16 team)
|
||||
if (m_Nodes[node].TotalOwner == team)
|
||||
{
|
||||
TC_LOG_FATAL("bg.battleground", "Assaulting team is TotalOwner of node");
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
if (m_Nodes[node].Owner == team)
|
||||
{
|
||||
TC_LOG_FATAL("bg.battleground", "Assaulting team is owner of node");
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
if (m_Nodes[node].State == POINT_DESTROYED)
|
||||
{
|
||||
TC_LOG_FATAL("bg.battleground", "Destroyed node is being assaulted");
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
if (m_Nodes[node].State == POINT_ASSAULTED && m_Nodes[node].TotalOwner) //only assault an assaulted node if no totalowner exists
|
||||
{
|
||||
TC_LOG_FATAL("bg.battleground", "Assault on an not assaulted node with total owner");
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
//the timer gets another time, if the previous owner was 0 == Neutral
|
||||
m_Nodes[node].Timer = (m_Nodes[node].PrevOwner)? BG_AV_CAPTIME : BG_AV_SNOWFALL_FIRSTCAP;
|
||||
|
||||
@@ -744,7 +744,7 @@ bool BattlegroundSA::CanInteractWithObject(uint32 objectId)
|
||||
return false;
|
||||
break;
|
||||
default:
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -877,7 +877,7 @@ void BattlegroundSA::CaptureGraveyard(BG_SA_Graveyards i, Player* Source)
|
||||
|
||||
break;
|
||||
default:
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
break;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -368,7 +368,7 @@ void Puppet::InitSummon()
|
||||
{
|
||||
Minion::InitSummon();
|
||||
if (!SetCharmedBy(GetOwner(), CHARM_TYPE_POSSESS))
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
|
||||
void Puppet::Update(uint32 time)
|
||||
|
||||
@@ -680,7 +680,7 @@ class GameObject : public WorldObject, public GridObject<GameObject>, public Map
|
||||
// Owner already found and different than expected owner - remove object from old owner
|
||||
if (owner && GetOwnerGUID() && GetOwnerGUID() != owner)
|
||||
{
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
m_spawnedByDefault = false; // all object with owner is despawned after delay
|
||||
SetGuidValue(OBJECT_FIELD_CREATED_BY, owner);
|
||||
|
||||
@@ -1070,7 +1070,7 @@ Item* Item::CreateItem(uint32 itemEntry, uint32 count, Player const* player)
|
||||
delete item;
|
||||
}
|
||||
else
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ WorldObject::~WorldObject()
|
||||
{
|
||||
TC_LOG_FATAL("misc", "WorldObject::~WorldObject Corpse Type: %d (%s) deleted but still in map!!",
|
||||
ToCorpse()->GetType(), GetGUID().ToString().c_str());
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
ResetMap();
|
||||
}
|
||||
@@ -80,14 +80,14 @@ Object::~Object()
|
||||
TC_LOG_FATAL("misc", "Object::~Object %s deleted but still in world!!", GetGUID().ToString().c_str());
|
||||
if (isType(TYPEMASK_ITEM))
|
||||
TC_LOG_FATAL("misc", "Item slot %u", ((Item*)this)->GetSlot());
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
RemoveFromWorld();
|
||||
}
|
||||
|
||||
if (m_objectUpdated)
|
||||
{
|
||||
TC_LOG_FATAL("misc", "Object::~Object %s deleted but still in update list!!", GetGUID().ToString().c_str());
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
sObjectAccessor->RemoveUpdateObject(this);
|
||||
}
|
||||
|
||||
@@ -1795,7 +1795,7 @@ void WorldObject::SetMap(Map* map)
|
||||
if (m_currMap)
|
||||
{
|
||||
TC_LOG_FATAL("misc", "WorldObject::SetMap: obj %u new map %u %u, old map %u %u", (uint32)GetTypeId(), map->GetId(), map->GetInstanceId(), m_currMap->GetId(), m_currMap->GetInstanceId());
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
m_currMap = map;
|
||||
m_mapId = map->GetId();
|
||||
|
||||
@@ -159,11 +159,11 @@ class Pet : public Guardian
|
||||
private:
|
||||
void SaveToDB(uint32, uint8, uint32) override // override of Creature::SaveToDB - must not be called
|
||||
{
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
void DeleteFromDB() override // override of Creature::DeleteFromDB - must not be called
|
||||
{
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
};
|
||||
#endif
|
||||
@@ -20440,7 +20440,7 @@ void Player::StopCastingCharm()
|
||||
if (charm->GetCharmerGUID())
|
||||
{
|
||||
TC_LOG_FATAL("entities.player", "Charmed unit has charmer %s", charm->GetCharmerGUID().ToString().c_str());
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
else
|
||||
SetCharm(charm, false);
|
||||
|
||||
@@ -3520,7 +3520,7 @@ void Unit::_UnapplyAura(AuraApplication * aurApp, AuraRemoveMode removeMode)
|
||||
else
|
||||
++iter;
|
||||
}
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
|
||||
void Unit::_RemoveNoStackAurasDueToAura(Aura* aura)
|
||||
@@ -3630,7 +3630,7 @@ void Unit::RemoveOwnedAura(Aura* aura, AuraRemoveMode removeMode)
|
||||
}
|
||||
}
|
||||
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
|
||||
Aura* Unit::GetOwnedAura(uint32 spellId, ObjectGuid casterGUID, ObjectGuid itemCasterGUID, uint8 reqEffMask, Aura* except) const
|
||||
@@ -9450,7 +9450,7 @@ void Unit::SetMinion(Minion *minion, bool apply)
|
||||
{
|
||||
OutDebugInfo();
|
||||
(*itr)->OutDebugInfo();
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
ASSERT((*itr)->GetTypeId() == TYPEID_UNIT);
|
||||
|
||||
@@ -13604,7 +13604,7 @@ void Unit::RemoveFromWorld()
|
||||
if (GetCharmerGUID())
|
||||
{
|
||||
TC_LOG_FATAL("entities.unit", "Unit %u has charmer guid when removed from world", GetEntry());
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
|
||||
if (Unit* owner = GetOwner())
|
||||
@@ -13612,7 +13612,7 @@ void Unit::RemoveFromWorld()
|
||||
if (owner->m_Controlled.find(this) != owner->m_Controlled.end())
|
||||
{
|
||||
TC_LOG_FATAL("entities.unit", "Unit %u is in controlled list of %u when removed from world", GetEntry(), owner->GetEntry());
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15980,7 +15980,7 @@ void Unit::RemoveCharmedBy(Unit* charmer)
|
||||
{
|
||||
// TC_LOG_FATAL("entities.unit", "Unit::RemoveCharmedBy: this: " UI64FMTD " true charmer: " UI64FMTD " false charmer: " UI64FMTD,
|
||||
// GetGUID(), GetCharmerGUID(), charmer->GetGUID());
|
||||
// ASSERT(false);
|
||||
// ABORT();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -2571,7 +2571,7 @@ inline void Map::setNGrid(NGridType *grid, uint32 x, uint32 y)
|
||||
if (x >= MAX_NUMBER_OF_GRIDS || y >= MAX_NUMBER_OF_GRIDS)
|
||||
{
|
||||
TC_LOG_ERROR("maps", "map::setNGrid() Invalid grid coordinates found: %d, %d!", x, y);
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
i_grids[x][y] = grid;
|
||||
}
|
||||
@@ -2630,7 +2630,7 @@ void Map::AddObjectToSwitchList(WorldObject* obj, bool on)
|
||||
else if (itr->second != on)
|
||||
i_objectsToSwitch.erase(itr);
|
||||
else
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
|
||||
void Map::RemoveAllObjectsInRemoveList()
|
||||
@@ -2867,7 +2867,7 @@ bool InstanceMap::CanEnter(Player* player)
|
||||
if (player->GetMapRef().getTarget() == this)
|
||||
{
|
||||
TC_LOG_ERROR("maps", "InstanceMap::CanEnter - player %s(%u) already in map %d, %d, %d!", player->GetName().c_str(), player->GetGUIDLow(), GetId(), GetInstanceId(), GetSpawnMode());
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2976,7 +2976,7 @@ bool InstanceMap::AddPlayerToMap(Player* player)
|
||||
TC_LOG_ERROR("maps", "InstanceMap::Add: player %s(%d) is being put into instance %s %d, %d, %d, %d, %d, %d but he is in group %s and is bound to instance %d, %d, %d, %d, %d, %d!", player->GetName().c_str(), player->GetGUIDLow(), GetMapName(), mapSave->GetMapId(), mapSave->GetInstanceId(), mapSave->GetDifficulty(), mapSave->GetPlayerCount(), mapSave->GetGroupCount(), mapSave->CanReset(), group->GetLeaderGUID().ToString().c_str(), playerBind->save->GetMapId(), playerBind->save->GetInstanceId(), playerBind->save->GetDifficulty(), playerBind->save->GetPlayerCount(), playerBind->save->GetGroupCount(), playerBind->save->CanReset());
|
||||
if (groupBind)
|
||||
TC_LOG_ERROR("maps", "InstanceMap::Add: the group is bound to the instance %s %d, %d, %d, %d, %d, %d", GetMapName(), groupBind->save->GetMapId(), groupBind->save->GetInstanceId(), groupBind->save->GetDifficulty(), groupBind->save->GetPlayerCount(), groupBind->save->GetGroupCount(), groupBind->save->CanReset());
|
||||
//ASSERT(false);
|
||||
//ABORT();
|
||||
return false;
|
||||
}
|
||||
// bind to the group or keep using the group save
|
||||
@@ -3256,7 +3256,7 @@ bool BattlegroundMap::CanEnter(Player* player)
|
||||
if (player->GetMapRef().getTarget() == this)
|
||||
{
|
||||
TC_LOG_ERROR("maps", "BGMap::CanEnter - player %u is already in map!", player->GetGUIDLow());
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -194,13 +194,13 @@ InstanceMap* MapInstanced::CreateInstance(uint32 InstanceId, InstanceSave* save,
|
||||
if (!entry)
|
||||
{
|
||||
TC_LOG_ERROR("maps", "CreateInstance: no entry for map %d", GetId());
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
const InstanceTemplate* iTemplate = sObjectMgr->GetInstanceTemplate(GetId());
|
||||
if (!iTemplate)
|
||||
{
|
||||
TC_LOG_ERROR("maps", "CreateInstance: no instance template for map %d", GetId());
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
|
||||
// some instances only have one difficulty
|
||||
@@ -279,6 +279,6 @@ bool MapInstanced::DestroyInstance(InstancedMaps::iterator &itr)
|
||||
|
||||
bool MapInstanced::CanEnter(Player* /*player*/)
|
||||
{
|
||||
//ASSERT(false);
|
||||
//ABORT();
|
||||
return true;
|
||||
}
|
||||
@@ -82,7 +82,7 @@ protected:
|
||||
typedef void (SplineBase::*InitMethtod)(const Vector3*, index_type, index_type);
|
||||
static InitMethtod initializers[ModesEnd];
|
||||
|
||||
void UninitializedSpline() const { ASSERT(false);}
|
||||
void UninitializedSpline() const { ABORT();}
|
||||
|
||||
public:
|
||||
|
||||
|
||||
@@ -108,7 +108,7 @@ class ScriptRegistry
|
||||
TC_LOG_ERROR("scripts", "Script '%s' already assigned with the same script name, so the script can't work.",
|
||||
script->GetName().c_str());
|
||||
|
||||
ASSERT(false); // Error that should be fixed ASAP.
|
||||
ABORT(); // Error that should be fixed ASAP.
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -960,7 +960,7 @@ bool ScriptMgr::OnAreaTrigger(Player* player, AreaTriggerEntry const* trigger)
|
||||
Battleground* ScriptMgr::CreateBattleground(BattlegroundTypeId /*typeId*/)
|
||||
{
|
||||
/// @todo Implement script-side battlegrounds.
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -323,7 +323,7 @@ Aura* Aura::Create(SpellInfo const* spellproto, uint8 effMask, WorldObject* owne
|
||||
aura = new DynObjAura(spellproto, effMask, owner, caster, baseAmount, castItem, casterGUID);
|
||||
break;
|
||||
default:
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
return NULL;
|
||||
}
|
||||
// aura can be removed in Unit::_AddAura call
|
||||
@@ -437,7 +437,7 @@ void Aura::_UnapplyForTarget(Unit* target, Unit* caster, AuraApplication * auraA
|
||||
{
|
||||
TC_LOG_ERROR("spells", "Aura::_UnapplyForTarget, target:%u, caster:%u, spell:%u was not found in owners application map!",
|
||||
target->GetGUIDLow(), caster ? caster->GetGUIDLow() : 0, auraApp->GetBase()->GetSpellInfo()->Id);
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
|
||||
// aura has to be already applied
|
||||
@@ -528,7 +528,7 @@ void Aura::UpdateTargetMap(Unit* caster, bool apply)
|
||||
else
|
||||
{
|
||||
// ok, we have one unit twice in target map (impossible, but...)
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -586,7 +586,7 @@ void Aura::UpdateTargetMap(Unit* caster, bool apply)
|
||||
TC_LOG_FATAL("spells", "Aura %u: Owner %s (map %u) is not in the same map as target %s (map %u).", GetSpellInfo()->Id,
|
||||
GetOwner()->GetName().c_str(), GetOwner()->IsInWorld() ? GetOwner()->GetMap()->GetId() : uint32(-1),
|
||||
itr->first->GetName().c_str(), itr->first->IsInWorld() ? itr->first->GetMap()->GetId() : uint32(-1));
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
itr->first->_CreateAuraApplication(this, itr->second);
|
||||
++itr;
|
||||
|
||||
@@ -6586,7 +6586,7 @@ SpellEvent::~SpellEvent()
|
||||
{
|
||||
TC_LOG_ERROR("spells", "~SpellEvent: %s %u tried to delete non-deletable spell %u. Was not deleted, causes memory leak.",
|
||||
(m_Spell->GetCaster()->GetTypeId() == TYPEID_PLAYER ? "Player" : "Creature"), m_Spell->GetCaster()->GetGUIDLow(), m_Spell->m_spellInfo->Id);
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7044,7 +7044,7 @@ bool Spell::CallScriptEffectHandlers(SpellEffIndex effIndex, SpellEffectHandleMo
|
||||
hookType = SPELL_SCRIPT_HOOK_EFFECT_HIT_TARGET;
|
||||
break;
|
||||
default:
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
return false;
|
||||
}
|
||||
(*scritr)->_PrepareScriptCall(hookType);
|
||||
|
||||
@@ -424,7 +424,7 @@ void FreezeDetectorHandler(const boost::system::error_code& error)
|
||||
else if (getMSTimeDiff(_lastChangeMsTime, curtime) > _maxCoreStuckTimeInMs)
|
||||
{
|
||||
TC_LOG_ERROR("server.worldserver", "World Thread hangs, kicking out server!");
|
||||
ASSERT(false);
|
||||
ABORT();
|
||||
}
|
||||
|
||||
_freezeCheckTimer.expires_from_now(boost::posix_time::seconds(1));
|
||||
|
||||
Reference in new issue
Block a user