]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Use less memory when rehashing built-in hashmaps
authorattilamolnar <attilamolnar@hush.com>
Fri, 15 Jun 2012 01:26:47 +0000 (03:26 +0200)
committerattilamolnar <attilamolnar@hush.com>
Fri, 13 Jul 2012 15:27:03 +0000 (17:27 +0200)
src/inspircd.cpp

index cf8c22633315e3538c25a7d50da04bf732ea6c8b..aa03d62dee4835f8d67300ea1c0e3ff6bb2fe992 100644 (file)
@@ -195,24 +195,21 @@ void InspIRCd::ResetMaxBans()
 void InspIRCd::RehashUsersAndChans()
 {
        user_hash* old_users = Users->clientlist;
-       user_hash* old_uuid  = Users->uuidlist;
-       chan_hash* old_chans = chanlist;
-
-       Users->clientlist = new user_hash();
-       Users->uuidlist = new user_hash();
-       chanlist = new chan_hash();
-
+       Users->clientlist = new user_hash;
        for (user_hash::const_iterator n = old_users->begin(); n != old_users->end(); n++)
                Users->clientlist->insert(*n);
+       delete old_users;
 
+       user_hash* old_uuid = Users->uuidlist;
+       Users->uuidlist = new user_hash;
        for (user_hash::const_iterator n = old_uuid->begin(); n != old_uuid->end(); n++)
                Users->uuidlist->insert(*n);
+       delete old_uuid;
 
+       chan_hash* old_chans = chanlist;
+       chanlist = new chan_hash;
        for (chan_hash::const_iterator n = old_chans->begin(); n != old_chans->end(); n++)
                chanlist->insert(*n);
-
-       delete old_users;
-       delete old_uuid;
        delete old_chans;
 
        // Reset the already_sent IDs so we don't wrap it around and drop a message