From: Attila Molnar Date: Fri, 14 Mar 2014 12:04:10 +0000 (+0100) Subject: Change allocation of UserManager::uuidlist to be physically part of the object contai... X-Git-Url: https://git.netwichtig.de/gitweb/?a=commitdiff_plain;h=adb26a4e882d317de4e4135f414b7002cafe07a4;p=user%2Fhenk%2Fcode%2Finspircd.git Change allocation of UserManager::uuidlist to be physically part of the object containing it --- diff --git a/include/usermanager.h b/include/usermanager.h index e287d74d0..b1c3520e9 100644 --- a/include/usermanager.h +++ b/include/usermanager.h @@ -48,7 +48,7 @@ class CoreExport UserManager /** Client list stored by UUID. Contains all clients, and is updated * automatically by the constructor and destructor of User. */ - user_hash* uuidlist; + user_hash uuidlist; /** Local client list, a list containing only local clients */ diff --git a/src/helperfuncs.cpp b/src/helperfuncs.cpp index 850eaf4c0..567806efc 100644 --- a/src/helperfuncs.cpp +++ b/src/helperfuncs.cpp @@ -59,9 +59,9 @@ User* InspIRCd::FindNickOnly(const std::string &nick) User *InspIRCd::FindUUID(const std::string &uid) { - user_hash::iterator finduuid = this->Users->uuidlist->find(uid); + user_hash::iterator finduuid = this->Users->uuidlist.find(uid); - if (finduuid == this->Users->uuidlist->end()) + if (finduuid == this->Users->uuidlist.end()) return NULL; return finduuid->second; diff --git a/src/usermanager.cpp b/src/usermanager.cpp index 12db0dde2..2a9f02cfd 100644 --- a/src/usermanager.cpp +++ b/src/usermanager.cpp @@ -27,7 +27,6 @@ UserManager::UserManager() : clientlist(new user_hash) - , uuidlist(new user_hash) , unregistered_count(0) { } @@ -40,7 +39,6 @@ UserManager::~UserManager() } delete clientlist; - delete uuidlist; } /* add a client connection to the sockets list */ @@ -208,7 +206,7 @@ void UserManager::QuitUser(User* user, const std::string& quitreason, const std: else ServerInstance->Logs->Log("USERS", LOG_DEFAULT, "ERROR: Nick not found in clientlist, cannot remove: " + user->nick); - uuidlist->erase(user->uuid); + uuidlist.erase(user->uuid); user->PurgeEmptyChannels(); } diff --git a/src/users.cpp b/src/users.cpp index 1c13ac4ef..e760a3fbc 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -79,7 +79,7 @@ User::User(const std::string& uid, Server* srv, int type) ServerInstance->Logs->Log("USERS", LOG_DEBUG, "New UUID for user: %s", uuid.c_str()); - if (!ServerInstance->Users->uuidlist->insert(std::make_pair(uuid, this)).second) + if (!ServerInstance->Users->uuidlist.insert(std::make_pair(uuid, this)).second) throw CoreException("Duplicate UUID "+std::string(uuid)+" in User constructor"); } @@ -100,7 +100,7 @@ LocalUser::LocalUser(int myfd, irc::sockets::sockaddrs* client, irc::sockets::so User::~User() { - if (ServerInstance->Users->uuidlist->find(uuid) != ServerInstance->Users->uuidlist->end()) + if (ServerInstance->FindUUID(uuid)) ServerInstance->Logs->Log("USERS", LOG_DEFAULT, "User destructor for %s called without cull", uuid.c_str()); } @@ -344,7 +344,7 @@ CullResult FakeUser::cull() // Fake users don't quit, they just get culled. quitting = true; // Fake users are not inserted into UserManager::clientlist, they're only in the uuidlist - ServerInstance->Users->uuidlist->erase(uuid); + ServerInstance->Users->uuidlist.erase(uuid); return User::cull(); }