Fix memory leak with Clients.
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user