Index: InstanceSaveMgr.cpp =================================================================== --- InstanceSaveMgr.cpp (revision 748) +++ InstanceSaveMgr.cpp (working copy) @@ -37,6 +37,9 @@ void InstanceSavingManagement::BuildSavedInstancesForPlayer(Player *pPlayer) { + if(!pPlayer) + return; + bool result = false; bool hasBeenSaved = false; WorldPacket data; @@ -102,6 +105,9 @@ void InstanceSavingManagement::SavePlayerToInstance(Player *pPlayer, uint32 mapid) { + if(!pPlayer) + return; + WorldPacket data; instanceInfoListMutex.Acquire(); @@ -146,6 +152,9 @@ void InstanceSavingManagement::ResetSavedInstancesForPlayer(Player *pPlayer) { + if(!pPlayer) + return; + bool result; WorldPacket data; @@ -153,9 +162,12 @@ InstanceInfo::const_iterator itr; for (itr = mInstanceInfoList.begin();itr != mInstanceInfoList.end(); itr++) { - Instance_Map_Info_Holder *p = itr->second; - if(p->GetMapInfo()->type == INSTANCE_RAID) - continue; +Instance_Map_Info_Holder *p = itr->second; +MapInfo *pMapInfo = p->GetMapInfo(); + if(!pMapInfo) + continue; + if(pMapInfo->type == INSTANCE_RAID) +continue; if(pPlayer->InGroup()) result = p->RemoveGroup(pPlayer->GetGroup()->GetID()); @@ -209,6 +221,9 @@ //++++++++++++++++++++++++++++++++++++++++++++++++++++++++ bool InstanceSavingManagement::IsPlayerSavedToMap(uint32 mapid, Player *pPlayer) { + if(!pPlayer) + return false; + instanceInfoListMutex.Acquire(); InstanceInfo::iterator itr = mInstanceInfoList.find( mapid ); @@ -230,6 +245,9 @@ } bool InstanceSavingManagement::IsPlayerSavedToInstanceId(uint32 mapid, uint32 instanceid, Player *pPlayer) { + if(!pPlayer) + return false; + instanceInfoListMutex.Acquire(); InstanceInfo::iterator itr = mInstanceInfoList.find( mapid ); @@ -358,6 +376,9 @@ } void InstanceSavingManagement::SaveObjectStateToInstance(Unit *pUnit) { + if(!pUnit) + return; + instanceInfoListMutex.Acquire(); InstanceInfo::iterator itr = mInstanceInfoList.find( pUnit->GetMapId() ); if(itr != mInstanceInfoList.end()) @@ -392,6 +413,9 @@ Instance_Map_InstanceId_Holder *InstanceSavingManagement::GetRaidAndMMInstance(uint32 mapid, Player * pPlayer) { + if(!pPlayer) + return NULL; + instanceInfoListMutex.Acquire(); InstanceInfo::iterator itr = mInstanceInfoList.find( mapid ); if(itr != mInstanceInfoList.end()) @@ -413,6 +437,9 @@ void InstanceSavingManagement::BuildRaidSavedInstancesForPlayer(Player *pPlayer) { + if(!pPlayer) + return; + /*hmm packet structure for this one? counter, mapid time instanceid */