diff options
| author | Shauren <shauren.trinity@gmail.com> | 2013-05-17 21:30:02 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2013-05-17 21:30:02 +0200 |
| commit | 7d4670341387568e89d21a8e0d702230e0ab962d (patch) | |
| tree | f6e409bb8899dc546fcf96a53abbd5bb025bda43 /src/server/game/Conditions/ConditionMgr.cpp | |
| parent | 8be181c7e60daf9833044da61b379c2136892c37 (diff) | |
Core/Misc: Another batch of fixes for issues found by static analysis
Diffstat (limited to 'src/server/game/Conditions/ConditionMgr.cpp')
| -rw-r--r-- | src/server/game/Conditions/ConditionMgr.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 9b1cfed7038..67c81b35065 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -1110,6 +1110,9 @@ bool ConditionMgr::addToSpellImplicitTargetConditions(Condition* cond) if ((1<<firstEffIndex) & *itr) break; + if (firstEffIndex >= MAX_SPELL_EFFECTS) + return false; + // get shared data ConditionList* sharedList = spellInfo->Effects[firstEffIndex].ImplicitTargetConditions; @@ -1129,9 +1132,18 @@ bool ConditionMgr::addToSpellImplicitTargetConditions(Condition* cond) { // add new list, create new shared mask sharedList = new ConditionList(); + bool assigned = false; for (uint8 i = firstEffIndex; i < MAX_SPELL_EFFECTS; ++i) + { if ((1<<i) & commonMask) + { spellInfo->Effects[i].ImplicitTargetConditions = sharedList; + assigned = true; + } + } + + if (!assigned) + delete sharedList; } sharedList->push_back(cond); break; |
