Core/Misc: Fix some static analysis issues
Fix some static analysis issues about: - uninitialized values, most of which are false positives, always initialized before being accessed - unchecked return values - dead code never executed - bad formatting leading to wrong behavior Please ensure EventMap is never used with event id set to 0 or those events will never execute.
This commit is contained in:
@@ -45,7 +45,7 @@ class GameObjectModel /*, public Intersectable*/
|
||||
float iScale;
|
||||
VMAP::WorldModel* iModel;
|
||||
|
||||
GameObjectModel() : phasemask(0), iModel(NULL) { }
|
||||
GameObjectModel() : phasemask(0), iInvScale(0), iScale(0), iModel(NULL) { }
|
||||
bool initialize(const GameObject& go, const GameObjectDisplayInfoEntry& info);
|
||||
|
||||
public:
|
||||
|
||||
@@ -1286,10 +1286,8 @@ void Unit::CalculateMeleeDamage(Unit* victim, uint32 damage, CalcDamageInfo* dam
|
||||
damageInfo->HitInfo |= HITINFO_AFFECTS_VICTIM;
|
||||
|
||||
int32 resilienceReduction = damageInfo->damage;
|
||||
if (attackType != RANGED_ATTACK)
|
||||
ApplyResilience(victim, NULL, &resilienceReduction, (damageInfo->hitOutCome == MELEE_HIT_CRIT), CR_CRIT_TAKEN_MELEE);
|
||||
else
|
||||
ApplyResilience(victim, NULL, &resilienceReduction, (damageInfo->hitOutCome == MELEE_HIT_CRIT), CR_CRIT_TAKEN_RANGED);
|
||||
// attackType is checked already for BASE_ATTACK or OFF_ATTACK so it can't be RANGED_ATTACK here
|
||||
ApplyResilience(victim, NULL, &resilienceReduction, (damageInfo->hitOutCome == MELEE_HIT_CRIT), CR_CRIT_TAKEN_MELEE);
|
||||
resilienceReduction = damageInfo->damage - resilienceReduction;
|
||||
damageInfo->damage -= resilienceReduction;
|
||||
damageInfo->cleanDamage += resilienceReduction;
|
||||
|
||||
@@ -5120,6 +5120,7 @@ SpellCastResult Spell::CheckCast(bool strict)
|
||||
case SUMMON_CATEGORY_PET:
|
||||
if (m_caster->GetPetGUID())
|
||||
return SPELL_FAILED_ALREADY_HAVE_SUMMON;
|
||||
// intentional missing break, check both GetPetGUID() and GetCharmGUID for SUMMON_CATEGORY_PET
|
||||
case SUMMON_CATEGORY_PUPPET:
|
||||
if (m_caster->GetCharmGUID())
|
||||
return SPELL_FAILED_ALREADY_HAVE_CHARM;
|
||||
|
||||
@@ -50,7 +50,12 @@ public:
|
||||
|
||||
struct npc_water_elementalAI : public ScriptedAI
|
||||
{
|
||||
npc_water_elementalAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_water_elementalAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
waterBoltTimer = 3 * IN_MILLISECONDS;
|
||||
resetTimer = 5 * IN_MILLISECONDS;
|
||||
balindaGUID = 0;
|
||||
}
|
||||
|
||||
uint32 waterBoltTimer;
|
||||
uint64 balindaGUID;
|
||||
|
||||
+6
-1
@@ -164,7 +164,12 @@ public:
|
||||
|
||||
struct boss_rend_blackhandAI : public BossAI
|
||||
{
|
||||
boss_rend_blackhandAI(Creature* creature) : BossAI(creature, DATA_WARCHIEF_REND_BLACKHAND) { }
|
||||
boss_rend_blackhandAI(Creature* creature) : BossAI(creature, DATA_WARCHIEF_REND_BLACKHAND)
|
||||
{
|
||||
gythEvent = false;
|
||||
victorGUID = 0;
|
||||
portcullisGUID = 0;
|
||||
}
|
||||
|
||||
void Reset() OVERRIDE
|
||||
{
|
||||
|
||||
+22
@@ -56,6 +56,28 @@ public:
|
||||
{
|
||||
instance_blackwing_lair_InstanceMapScript(Map* map) : InstanceScript(map)
|
||||
{
|
||||
// Razorgore
|
||||
EggCount = 0;
|
||||
EggEvent = 0;
|
||||
RazorgoreTheUntamedGUID = 0;
|
||||
RazorgoreDoorGUID = 0;
|
||||
// Vaelastrasz the Corrupt
|
||||
VaelastraszTheCorruptGUID = 0;
|
||||
VaelastraszDoorGUID = 0;
|
||||
// Broodlord Lashlayer
|
||||
BroodlordLashlayerGUID = 0;
|
||||
BroodlordDoorGUID = 0;
|
||||
// 3 Dragons
|
||||
FiremawGUID = 0;
|
||||
EbonrocGUID = 0;
|
||||
FlamegorGUID = 0;
|
||||
ChrommagusDoorGUID = 0;
|
||||
// Chormaggus
|
||||
ChromaggusGUID = 0;
|
||||
NefarianDoorGUID = 0;
|
||||
// Nefarian
|
||||
LordVictorNefariusGUID = 0;
|
||||
NefarianGUID = 0;
|
||||
SetBossNumber(EncounterCount);
|
||||
}
|
||||
|
||||
|
||||
@@ -787,7 +787,11 @@ public:
|
||||
|
||||
struct npc_pulsing_pumpkinAI : public ScriptedAI
|
||||
{
|
||||
npc_pulsing_pumpkinAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_pulsing_pumpkinAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
sprouted = false;
|
||||
debuffGUID = 0;
|
||||
}
|
||||
|
||||
bool sprouted;
|
||||
uint64 debuffGUID;
|
||||
|
||||
@@ -185,6 +185,8 @@ public:
|
||||
{
|
||||
npc_towering_infernalAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
ImmolationTimer = 5000;
|
||||
CheckTimer = 5000;
|
||||
instance = creature->GetInstanceScript();
|
||||
AnetheronGUID = instance->GetData64(DATA_ANETHERON);
|
||||
}
|
||||
|
||||
@@ -191,6 +191,9 @@ public:
|
||||
{
|
||||
npc_lesser_doomguardAI(Creature* creature) : hyjal_trashAI(creature)
|
||||
{
|
||||
CrippleTimer = 50000;
|
||||
WarstompTimer = 10000;
|
||||
CheckTimer = 5000;
|
||||
instance = creature->GetInstanceScript();
|
||||
AzgalorGUID = instance->GetData64(DATA_AZGALOR);
|
||||
}
|
||||
|
||||
@@ -171,7 +171,11 @@ public:
|
||||
|
||||
struct npc_snufflenose_gopherAI : public PetAI
|
||||
{
|
||||
npc_snufflenose_gopherAI(Creature* creature) : PetAI(creature) { }
|
||||
npc_snufflenose_gopherAI(Creature* creature) : PetAI(creature)
|
||||
{
|
||||
IsMovementActive = false;
|
||||
TargetTubberGUID = 0;
|
||||
}
|
||||
|
||||
void Reset() OVERRIDE
|
||||
{
|
||||
|
||||
@@ -898,6 +898,9 @@ public:
|
||||
{
|
||||
eye_tentacleAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
MindflayTimer = 500;
|
||||
KillSelfTimer = 35000;
|
||||
|
||||
Portal = 0;
|
||||
if (Creature* pPortal = me->SummonCreature(NPC_SMALL_PORTAL, *me, TEMPSUMMON_CORPSE_DESPAWN))
|
||||
{
|
||||
@@ -974,6 +977,10 @@ public:
|
||||
{
|
||||
claw_tentacleAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
GroundRuptureTimer = 500;
|
||||
HamstringTimer = 2000;
|
||||
EvadeTimer = 5000;
|
||||
|
||||
SetCombatMovement(false);
|
||||
|
||||
Portal = 0;
|
||||
@@ -1085,6 +1092,11 @@ public:
|
||||
{
|
||||
giant_claw_tentacleAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
GroundRuptureTimer = 500;
|
||||
HamstringTimer = 2000;
|
||||
ThrashTimer = 5000;
|
||||
EvadeTimer = 5000;
|
||||
|
||||
SetCombatMovement(false);
|
||||
|
||||
Portal = 0;
|
||||
@@ -1205,6 +1217,8 @@ public:
|
||||
{
|
||||
giant_eye_tentacleAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
BeamTimer = 500;
|
||||
|
||||
SetCombatMovement(false);
|
||||
|
||||
Portal = 0;
|
||||
|
||||
@@ -208,9 +208,11 @@ class instance_oculus : public InstanceMapScript
|
||||
break;
|
||||
case DATA_VAROS:
|
||||
if (state == DONE)
|
||||
{
|
||||
DoUpdateWorldState(WORLD_STATE_CENTRIFUGE_CONSTRUCT_SHOW, 0);
|
||||
if (Creature* urom = instance->GetCreature(UromGUID))
|
||||
urom->SetPhaseMask(1, true);
|
||||
}
|
||||
break;
|
||||
case DATA_UROM:
|
||||
if (state == DONE)
|
||||
|
||||
@@ -48,9 +48,9 @@ enum Spells
|
||||
|
||||
enum Events
|
||||
{
|
||||
EVENT_STREAM_OF_MACHINE_FLUID = 0,
|
||||
EVENT_JACKHAMMER = 1,
|
||||
EVENT_SHADOW_POWER = 2
|
||||
EVENT_STREAM_OF_MACHINE_FLUID = 1,
|
||||
EVENT_JACKHAMMER = 2,
|
||||
EVENT_SHADOW_POWER = 3
|
||||
};
|
||||
|
||||
class boss_gatewatcher_iron_hand : public CreatureScript
|
||||
|
||||
@@ -728,7 +728,15 @@ public:
|
||||
|
||||
struct npc_phase_hunterAI : public ScriptedAI
|
||||
{
|
||||
npc_phase_hunterAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_phase_hunterAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Weak = false;
|
||||
Materialize = false;
|
||||
Drained = false;
|
||||
WeakPercent = 25;
|
||||
PlayerGUID = 0;
|
||||
ManaBurnTimer = 5000;
|
||||
}
|
||||
|
||||
bool Weak;
|
||||
bool Materialize;
|
||||
|
||||
@@ -42,13 +42,13 @@ bool BasicStatementTask::Execute()
|
||||
if (m_has_result)
|
||||
{
|
||||
ResultSet* result = m_conn->Query(m_sql);
|
||||
if (!result || !result->GetRowCount())
|
||||
if (!result || !result->GetRowCount() || !result->NextRow())
|
||||
{
|
||||
delete result;
|
||||
m_result.set(QueryResult(NULL));
|
||||
return false;
|
||||
}
|
||||
result->NextRow();
|
||||
|
||||
m_result.set(QueryResult(result));
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -232,13 +232,12 @@ class DatabaseWorkerPool
|
||||
|
||||
ResultSet* result = conn->Query(sql);
|
||||
conn->Unlock();
|
||||
if (!result || !result->GetRowCount())
|
||||
if (!result || !result->GetRowCount() || !result->NextRow())
|
||||
{
|
||||
delete result;
|
||||
return QueryResult(NULL);
|
||||
}
|
||||
|
||||
result->NextRow();
|
||||
return QueryResult(result);
|
||||
}
|
||||
|
||||
|
||||
@@ -89,10 +89,9 @@ QueryResult SQLQueryHolder::GetResult(size_t index)
|
||||
if (index < m_queries.size())
|
||||
{
|
||||
ResultSet* result = m_queries[index].second.qresult;
|
||||
if (!result || !result->GetRowCount())
|
||||
if (!result || !result->GetRowCount() || !result->NextRow())
|
||||
return QueryResult(NULL);
|
||||
|
||||
result->NextRow();
|
||||
return QueryResult(result);
|
||||
}
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user