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:
jackpoz
2014-03-22 14:54:32 +01:00
parent 409f4bffd5
commit 6dcd8c8545
17 changed files with 85 additions and 19 deletions
@@ -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:
+2 -4
View File
@@ -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;
+1
View File
@@ -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;
@@ -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
{
@@ -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);
}
+1 -2
View File
@@ -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