From 8acee01804e96f80bb980137738764573780a642 Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Sun, 5 Jan 2014 14:23:03 +0100 Subject: [PATCH] m_spanningtree Remove vector from TreeServer::QuitUsers() --- src/modules/m_spanningtree/treeserver.cpp | 25 +++++++++-------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/src/modules/m_spanningtree/treeserver.cpp b/src/modules/m_spanningtree/treeserver.cpp index 2fce9a504..7d8abf4bf 100644 --- a/src/modules/m_spanningtree/treeserver.cpp +++ b/src/modules/m_spanningtree/treeserver.cpp @@ -140,23 +140,18 @@ void TreeServer::FinishBurst() int TreeServer::QuitUsers(const std::string &reason) { std::string publicreason = ServerInstance->Config->HideSplits ? "*.net *.split" : reason; - std::vector time_to_die; - for (user_hash::iterator n = ServerInstance->Users->clientlist->begin(); n != ServerInstance->Users->clientlist->end(); n++) - { - if (n->second->server == ServerName) - { - time_to_die.push_back(n->second); - } - } - for (std::vector::iterator n = time_to_die.begin(); n != time_to_die.end(); n++) + + const user_hash& users = *ServerInstance->Users->clientlist; + unsigned int original_size = users.size(); + for (user_hash::const_iterator i = users.begin(); i != users.end(); ) { - User* a = (User*)*n; - if (!IS_LOCAL(a)) - { - ServerInstance->Users->QuitUser(a, publicreason, &reason); - } + User* user = i->second; + // Increment the iterator now because QuitUser() removes the user from the container + ++i; + if (user->server == ServerName) + ServerInstance->Users->QuitUser(user, publicreason, &reason); } - return time_to_die.size(); + return original_size - users.size(); } /** This method is used to add the structure to the -- 2.39.2