Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-07-31 12:43:43 +0000
committerStijn Buys <ingar@osirion.org>2008-07-31 12:43:43 +0000
commit3da609588ad6fe7eb0581e4678a2ec8c6c1c4a18 (patch)
tree6824ff50935275424156f34fd5ec7912c1f4b055 /src/core/netserver.cc
parent02f6bfcef4f2e8b0fdbf12c652ab202edbeed19a (diff)
more heisenbugs fixes
Diffstat (limited to 'src/core/netserver.cc')
-rw-r--r--src/core/netserver.cc10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/core/netserver.cc b/src/core/netserver.cc
index 10fd554..dd5dc38 100644
--- a/src/core/netserver.cc
+++ b/src/core/netserver.cc
@@ -125,7 +125,7 @@ void NetServer::abort() {
// remove disconnected clients
void NetServer::reap()
{
- for (Clients:: iterator it = clients.begin(); it != clients.end(); it++) {
+ for (Clients:: iterator it = clients.begin(); it != clients.end(); ) {
NetClient *client = *it;
if (client->client_timeout + NETTIMEOUT < application()->time()) {
@@ -151,10 +151,12 @@ void NetServer::reap()
server()->player_disconnect((*it)->player());
// remove the client
- clients.erase(it);
delete client;
- it=clients.begin();
- }
+ clients.erase(it++);
+
+ } else {
+ ++it;
+ }
}
}