mirror of
https://github.com/mangosfour/server.git
synced 2025-12-12 19:37:03 +00:00
[8315] Fixed memory leaks (mostly at server shutdown) and code cleanups.
* Fixed leak in BattleGround::m_PlayerScores at BattleGround::Reset, add and use BattleGroundScoreMap typedef * Delete AreaTeam objects stored in global map at shutdown * Delete Corpse objects stored in global map at shutdown * Store guild bank log entries as objectes instead pointers in log event lists
This commit is contained in:
parent
e9234f048e
commit
a6413516f9
14 changed files with 118 additions and 147 deletions
|
|
@ -201,16 +201,13 @@ BattleGround::~BattleGround()
|
|||
// (this is done automatically in mapmanager update, when the instance is reset after the reset time)
|
||||
int size = m_BgCreatures.size();
|
||||
for(int i = 0; i < size; ++i)
|
||||
{
|
||||
DelCreature(i);
|
||||
}
|
||||
|
||||
size = m_BgObjects.size();
|
||||
for(int i = 0; i < size; ++i)
|
||||
{
|
||||
DelObject(i);
|
||||
}
|
||||
|
||||
if(GetInstanceID()) // not spam by useless queries in case BG templates
|
||||
if (GetInstanceID()) // not spam by useless queries in case BG templates
|
||||
{
|
||||
// delete creature and go respawn times
|
||||
WorldDatabase.PExecute("DELETE FROM creature_respawn WHERE instance = '%u'",GetInstanceID());
|
||||
|
|
@ -227,6 +224,9 @@ BattleGround::~BattleGround()
|
|||
((BattleGroundMap*)map)->SetUnload();
|
||||
// remove from bg free slot queue
|
||||
this->RemoveFromBGFreeSlotQueue();
|
||||
|
||||
for(BattleGroundScoreMap::const_iterator itr = m_PlayerScores.begin(); itr != m_PlayerScores.end(); ++itr)
|
||||
delete itr->second;
|
||||
}
|
||||
|
||||
void BattleGround::Update(uint32 diff)
|
||||
|
|
@ -939,7 +939,7 @@ void BattleGround::RemovePlayerAtLeave(uint64 guid, bool Transport, bool SendPac
|
|||
participant = true;
|
||||
}
|
||||
|
||||
std::map<uint64, BattleGroundScore*>::iterator itr2 = m_PlayerScores.find(guid);
|
||||
BattleGroundScoreMap::iterator itr2 = m_PlayerScores.find(guid);
|
||||
if (itr2 != m_PlayerScores.end())
|
||||
{
|
||||
delete itr2->second; // delete player's score
|
||||
|
|
@ -1081,6 +1081,9 @@ void BattleGround::Reset()
|
|||
m_InBGFreeSlotQueue = false;
|
||||
|
||||
m_Players.clear();
|
||||
|
||||
for(BattleGroundScoreMap::const_iterator itr = m_PlayerScores.begin(); itr != m_PlayerScores.end(); ++itr)
|
||||
delete itr->second;
|
||||
m_PlayerScores.clear();
|
||||
}
|
||||
|
||||
|
|
@ -1271,7 +1274,7 @@ bool BattleGround::HasFreeSlots() const
|
|||
void BattleGround::UpdatePlayerScore(Player *Source, uint32 type, uint32 value)
|
||||
{
|
||||
//this procedure is called from virtual function implemented in bg subclass
|
||||
std::map<uint64, BattleGroundScore*>::const_iterator itr = m_PlayerScores.find(Source->GetGUID());
|
||||
BattleGroundScoreMap::const_iterator itr = m_PlayerScores.find(Source->GetGUID());
|
||||
|
||||
if(itr == m_PlayerScores.end()) // player not found...
|
||||
return;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue