From bb962f92ace6eb23c66c5fccee01f825c22363c3 Mon Sep 17 00:00:00 2001 From: attilamolnar Date: Thu, 16 May 2013 20:51:12 +0200 Subject: Workaround for std::list::size() having linear complexity on some implementations --- src/usermanager.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/usermanager.cpp') diff --git a/src/usermanager.cpp b/src/usermanager.cpp index e3ddfc9f2..670add777 100644 --- a/src/usermanager.cpp +++ b/src/usermanager.cpp @@ -74,6 +74,7 @@ void UserManager::AddUser(int socket, ListenSocket* via, irc::sockets::sockaddrs ServerInstance->Users->AddGlobalClone(New); New->localuseriter = this->local_users.insert(local_users.end(), New); + local_count++; if ((this->local_users.size() > ServerInstance->Config->SoftLimit) || (this->local_users.size() >= (unsigned int)ServerInstance->SE->GetMaxFds())) { @@ -332,7 +333,7 @@ unsigned int UserManager::UnregisteredUserCount() unsigned int UserManager::LocalUserCount() { /* Doesnt count unregistered clients */ - return (this->local_users.size() - this->UnregisteredUserCount()); + return (this->local_count - this->UnregisteredUserCount()); } void UserManager::ServerNoticeAll(const char* text, ...) -- cgit v1.3.1-10-gc9f91