Core/Conditions: Prevent double deleting the same condition on cleanup, fixes shutdown crashes with conditions

--HG--
branch : trunk
This commit is contained in:
Shauren
2010-11-13 20:48:20 +01:00
parent a312e7b337
commit d73d975d56
+16 -15
View File
@@ -520,23 +520,24 @@ void ConditionMgr::LoadConditions(bool isReload)
bIsDone = addToGossipMenuItems(cond); bIsDone = addToGossipMenuItems(cond);
break; break;
case CONDITION_SOURCE_TYPE_VEHICLE_SPELL: 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 ConditionTypeMap cmap;
if (m_VehicleSpellConditions.find(cond->mSourceGroup) == m_VehicleSpellConditions.end()) m_VehicleSpellConditions[cond->mSourceGroup] = cmap;
{
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;
} }
//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: default:
break; break;
} }