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);
|
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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user