aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <none@none>2010-11-13 20:48:20 +0100
committerShauren <none@none>2010-11-13 20:48:20 +0100
commitd73d975d56405f817db5584e57bd789035b23545 (patch)
tree779241cba91f49845bca766173ffff1ee08ba119 /src
parenta312e7b337e9de1f09f4b8fb58838864db5f926e (diff)
Core/Conditions: Prevent double deleting the same condition on cleanup, fixes shutdown crashes with conditions
--HG-- branch : trunk
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Conditions/ConditionMgr.cpp31
1 files changed, 16 insertions, 15 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp
index 689a6de9eb9..7565451b2a7 100755
--- a/src/server/game/Conditions/ConditionMgr.cpp
+++ b/src/server/game/Conditions/ConditionMgr.cpp
@@ -520,23 +520,24 @@ void ConditionMgr::LoadConditions(bool isReload)
bIsDone = addToGossipMenuItems(cond);
break;
case CONDITION_SOURCE_TYPE_VEHICLE_SPELL:
+ {
+ //if no list for vehicle create one
+ if (m_VehicleSpellConditions.find(cond->mSourceGroup) == m_VehicleSpellConditions.end())
{
- //if no list for vehicle create one
- if (m_VehicleSpellConditions.find(cond->mSourceGroup) == m_VehicleSpellConditions.end())
- {
- ConditionTypeMap cmap;
- m_VehicleSpellConditions[cond->mSourceGroup] = cmap;
- }
- //if no list for vehicle's spell create one
- if (m_VehicleSpellConditions[cond->mSourceGroup].find(cond->mSourceEntry) == m_VehicleSpellConditions[cond->mSourceGroup].end())
- {
- ConditionList clist;
- m_VehicleSpellConditions[cond->mSourceGroup][cond->mSourceEntry] = clist;
- }
- m_VehicleSpellConditions[cond->mSourceGroup][cond->mSourceEntry].push_back(cond);
- bIsDone = true;
- break;
+ ConditionTypeMap cmap;
+ m_VehicleSpellConditions[cond->mSourceGroup] = cmap;
+ }
+ //if no list for vehicle's spell create one
+ if (m_VehicleSpellConditions[cond->mSourceGroup].find(cond->mSourceEntry) == m_VehicleSpellConditions[cond->mSourceGroup].end())
+ {
+ ConditionList clist;
+ m_VehicleSpellConditions[cond->mSourceGroup][cond->mSourceEntry] = clist;
}
+ m_VehicleSpellConditions[cond->mSourceGroup][cond->mSourceEntry].push_back(cond);
+ bIsDone = true;
+ ++count;
+ continue; // do not add to m_AllocatedMemory to avoid double deleting
+ }
default:
break;
}