]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/users.cpp
Correctly use iterators and pointer to ucrec
[user/henk/code/inspircd.git] / src / users.cpp
index a50787a17107aa6d4908a6142d7e5f7bd80e3d9b..5c1d78fb020a37e4433dcf7416a4d725a440f7cc 100644 (file)
@@ -113,10 +113,23 @@ userrec::userrec()
        sendq = "";
        chans.clear();
        invites.clear();
+        chans.resize(MAXCHANS);
+        for (unsigned int n = 0; n < MAXCHANS; n++)
+        {
+               ucrec* x = new ucrec();
+               chans[n] = x;
+               x->channel = NULL;
+               x->uc_modes = 0;
+        }
 }
 
 userrec::~userrec()
 {
+       for (std::vector<ucrec*>::iterator n = chans.begin(); n != chans.end(); n++)
+       {
+               ucrec* x = (ucrec*)*n;
+               delete x;
+       }
 }
 
 void userrec::MakeHost(char* nhost)
@@ -515,12 +528,15 @@ void AddWhoWas(userrec* u)
        }
        else
        {
-               if (iter->size() > 10)
+               whowas_set* group = (whowas_set*)iter->second;
+               if (group->size() > 10)
                {
-                       iter->pop_front();
+                       WhoWasGroup *a = (WhoWasGroup*)*(group->begin());
+                       delete a;
+                       group->pop_front();
                }
                WhoWasGroup *a = new WhoWasGroup(u);
-               iter->push_back(a);
+               group->push_back(a);
        }
 }
 
@@ -529,10 +545,10 @@ void MaintainWhoWas(time_t TIME)
 {
        for (whowas_users::iterator iter = whowas.begin(); iter != whowas.end(); iter++)
        {
-               whowas_set* n = (whowas_set*)iter;
+               whowas_set* n = (whowas_set*)iter->second;
                if (n->size())
                {
-                       while ((n->begin() != n->end()) && (n->begin()->signon < TIME - 259200)) // 3 days
+                       while ((n->begin() != n->end()) && ((*n->begin())->signon < TIME - 259200)) // 3 days
                        {
                                WhoWasGroup *a = *(n->begin());
                                delete a;
@@ -613,11 +629,6 @@ void AddClient(int socket, int port, bool iscached, in_addr ip4)
         clientlist[tempnick]->sendqmax = class_sqmax;
         clientlist[tempnick]->recvqmax = class_rqmax;
 
-        ucrec a;
-        a.channel = NULL;
-        a.uc_modes = 0;
-       clientlist[tempnick]->chans.resize(MAXCHANS);
-
        fd_ref_table[socket] = clientlist[tempnick];
        local_users.push_back(clientlist[tempnick]);