Fix memory leak with Clients.

This commit is contained in:
Josh Allen
2004-09-18 05:48:40 +00:00
parent a0220f60d1
commit a62c82e4db
+10 -1
View File
@@ -64,6 +64,9 @@ bool StepManiaLanServer::ServerStart()
void StepManiaLanServer::ServerStop() void StepManiaLanServer::ServerStop()
{ {
for (unsigned int x = 0; x < Client.size(); ++x)
delete Client[x];
Client.clear(); Client.clear();
server.close(); server.close();
stop = true; stop = true;
@@ -113,12 +116,18 @@ void StepManiaLanServer::Disconnect(const unsigned int clientNum)
vector<GameClient*>::iterator Iterator; vector<GameClient*>::iterator Iterator;
Iterator = Client.begin(); Iterator = Client.begin();
if (clientNum == (Client.size()-1)) if (clientNum == (Client.size()-1))
{
delete Client[clientNum];
Client.pop_back(); Client.pop_back();
}
else else
for (unsigned int x = 0; x < Client.size(); ++x) for (unsigned int x = 0; x < Client.size(); ++x)
{ {
if (x == clientNum) if (x == clientNum)
{
delete Client[x];
Client.erase(Iterator); Client.erase(Iterator);
}
Iterator++; Iterator++;
} }
} }
@@ -532,7 +541,7 @@ void StepManiaLanServer::NewClientCheck()
} }
else else
{ {
Client.pop_back(); Disconnect(Client.size()-1);
} }
} }