diff options
-rw-r--r-- | src/server/game/Conditions/ConditionMgr.cpp | 3 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuras.cpp | 3 | ||||
-rw-r--r-- | src/server/game/World/World.cpp | 5 | ||||
-rw-r--r-- | src/server/shared/DataStores/DB2StorageLoader.cpp | 1 |
5 files changed, 12 insertions, 2 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 2542706e507..366a8f5c8a9 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -1316,7 +1316,10 @@ bool ConditionMgr::addToSpellImplicitTargetConditions(Condition* cond) } if (!assigned) + { delete sharedList; + break; + } } sharedList->push_back(cond); break; diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 44bc3e281b1..639530e98f1 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -631,7 +631,7 @@ uint32 Unit::DealDamage(Unit* victim, uint32 damage, CleanDamage const* cleanDam // Rage from Damage made (only from direct weapon damage) if (cleanDamage && damagetype == DIRECT_DAMAGE && this != victim && getPowerType() == POWER_RAGE) { - uint32 rage = uint32(GetAttackTime(cleanDamage->attackType) / 1000 * 8.125f); + uint32 rage = uint32(GetAttackTime(cleanDamage->attackType) / 1000.f * 8.125f); switch (cleanDamage->attackType) { case OFF_ATTACK: diff --git a/src/server/game/Spells/Auras/SpellAuras.cpp b/src/server/game/Spells/Auras/SpellAuras.cpp index 1f2d599121e..edbc9ab37b6 100644 --- a/src/server/game/Spells/Auras/SpellAuras.cpp +++ b/src/server/game/Spells/Auras/SpellAuras.cpp @@ -327,6 +327,9 @@ Aura* Aura::Create(SpellInfo const* spellproto, uint32 effMask, WorldObject* own else casterGUID = caster->GetGUID(); + // at this point of Aura::Create() there MUST be a valid caster + ASSERT(caster); + // check if aura can be owned by owner if (owner->isType(TYPEMASK_UNIT)) if (!owner->IsInWorld() || ((Unit*)owner)->IsDuringRemoveFromWorld()) diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index abcd2468e11..3b110b77723 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -2292,7 +2292,10 @@ namespace Trinity va_end(ap); } else - std::strcpy(strBuffer, text); + { + std::strncpy(strBuffer, text, BufferSize); + strBuffer[BufferSize - 1] = '\0'; + } do_helper(dataList, strBuffer); } diff --git a/src/server/shared/DataStores/DB2StorageLoader.cpp b/src/server/shared/DataStores/DB2StorageLoader.cpp index b83525cc0dd..6dddc68b5de 100644 --- a/src/server/shared/DataStores/DB2StorageLoader.cpp +++ b/src/server/shared/DataStores/DB2StorageLoader.cpp @@ -513,6 +513,7 @@ char* DB2DatabaseLoader::Load(const char* format, int32 preparedStatement, uint3 { LocalizedString** slot = (LocalizedString**)(&dataValue[offset]); *slot = (LocalizedString*)(&stringHolders[stringHoldersRecordPoolSize * rec + stringHolderSize * stringFieldNumInRecord]); + ASSERT(*slot); // Value in database in main table field must be for enUS locale if (char* str = AddLocaleString(*slot, LOCALE_enUS, fields[f].GetString())) |