Core/Conditions: Prevent double deleting the same condition on cleanup, fixes shutdown crashes with conditions
--HG-- branch : trunk
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user