diff options
| author | 2010-04-13 12:47:42 -0500 | |
|---|---|---|
| committer | 2010-08-03 17:32:42 -0400 | |
| commit | c1a07677db2bb0b023d5eb3565353cb0843eefbf (patch) | |
| tree | 5d2bae34ba9d411ce19e9179498d289b1d2c468d /src/modules | |
| parent | Fix "foo" < "foobar" comparison in irc::string (diff) | |
Change UserChanList to an intrusive-style linked list
Diffstat (limited to 'src/modules')
| -rw-r--r-- | src/modules/m_auditorium.cpp | 11 | ||||
| -rw-r--r-- | src/modules/m_channelban.cpp | 2 | ||||
| -rw-r--r-- | src/modules/m_check.cpp | 3 | ||||
| -rw-r--r-- | src/modules/m_delayjoin.cpp | 12 | ||||
| -rw-r--r-- | src/modules/m_nickflood.cpp | 4 | ||||
| -rw-r--r-- | src/modules/m_nonicks.cpp | 2 | ||||
| -rw-r--r-- | src/modules/m_operprefix.cpp | 2 |
7 files changed, 20 insertions, 16 deletions
diff --git a/src/modules/m_auditorium.cpp b/src/modules/m_auditorium.cpp index 6e1f40506..f7964f253 100644 --- a/src/modules/m_auditorium.cpp +++ b/src/modules/m_auditorium.cpp @@ -146,17 +146,20 @@ class ModuleAuditorium : public Module BuildExcept(memb, excepts); } - void OnBuildNeighborList(User* source, UserChanList &include, std::map<User*,bool> &exception) + void OnBuildNeighborList(User* source, std::vector<Channel*> &include, std::map<User*,bool> &exception) { - UCListIter i = include.begin(); + std::vector<Channel*>::iterator i = include.begin(); while (i != include.end()) { - Channel* c = *i++; + Channel* c = *i; Membership* memb = c->GetUser(source); if (!memb || IsVisible(memb)) + { + i++; continue; + } // this channel should not be considered when listing my neighbors - include.erase(c); + include.erase(i); // however, that might hide me from ops that can see me... const UserMembList* users = c->GetUsers(); for(UserMembCIter j = users->begin(); j != users->end(); j++) diff --git a/src/modules/m_channelban.cpp b/src/modules/m_channelban.cpp index 85f3fff7d..95da697bc 100644 --- a/src/modules/m_channelban.cpp +++ b/src/modules/m_channelban.cpp @@ -47,7 +47,7 @@ class ModuleBadChannelExtban : public Module } for (UCListIter i = user->chans.begin(); i != user->chans.end(); i++) { - if (InspIRCd::Match((**i).name, rm)) + if (InspIRCd::Match(i->chan->name, rm)) { if (status) { diff --git a/src/modules/m_check.cpp b/src/modules/m_check.cpp index 5bfabb1cf..97b4f116f 100644 --- a/src/modules/m_check.cpp +++ b/src/modules/m_check.cpp @@ -136,8 +136,7 @@ class CommandCheck : public Command for (UCListIter i = targuser->chans.begin(); i != targuser->chans.end(); i++) { - Channel* c = *i; - chliststr.append(c->GetPrefixChar(targuser)).append(c->name).append(" "); + chliststr.append(i->chan->GetPrefixChar(targuser)).append(i->chan->name).append(" "); } std::stringstream dump(chliststr); diff --git a/src/modules/m_delayjoin.cpp b/src/modules/m_delayjoin.cpp index 86a8ee0df..9e7d81e9c 100644 --- a/src/modules/m_delayjoin.cpp +++ b/src/modules/m_delayjoin.cpp @@ -46,7 +46,7 @@ class ModuleDelayJoin : public Module void CleanUser(User* user); void OnUserPart(Membership*, std::string &partmessage, CUList&); void OnUserKick(User* source, Membership*, const std::string &reason, CUList&); - void OnBuildNeighborList(User* source, UserChanList &include, std::map<User*,bool> &exception); + void OnBuildNeighborList(User* source, std::vector<Channel*> &include, std::map<User*,bool> &exception); void OnText(User* user, void* dest, int target_type, const std::string &text, char status, CUList &exempt_list); }; @@ -124,15 +124,17 @@ void ModuleDelayJoin::OnUserKick(User* source, Membership* memb, const std::stri populate(except, memb); } -void ModuleDelayJoin::OnBuildNeighborList(User* source, UserChanList &include, std::map<User*,bool> &exception) +void ModuleDelayJoin::OnBuildNeighborList(User* source, std::vector<Channel*> &include, std::map<User*,bool> &exception) { - UCListIter i = include.begin(); + std::vector<Channel*>::iterator i = include.begin(); while (i != include.end()) { - Channel* c = *i++; + Channel* c = *i; Membership* memb = c->GetUser(source); if (memb && unjoined.get(memb)) - include.erase(c); + include.erase(i); + else + i++; } } diff --git a/src/modules/m_nickflood.cpp b/src/modules/m_nickflood.cpp index c9efab78e..6cf6784f1 100644 --- a/src/modules/m_nickflood.cpp +++ b/src/modules/m_nickflood.cpp @@ -202,7 +202,7 @@ class ModuleNickFlood : public Module for (UCListIter i = user->chans.begin(); i != user->chans.end(); i++) { - Channel *channel = *i; + Channel *channel = i->chan; ModResult res; nickfloodsettings *f = nf.ext.get(channel); @@ -241,7 +241,7 @@ class ModuleNickFlood : public Module for (UCListIter i = user->chans.begin(); i != user->chans.end(); ++i) { - Channel *channel = *i; + Channel *channel = i->chan; ModResult res; nickfloodsettings *f = nf.ext.get(channel); diff --git a/src/modules/m_nonicks.cpp b/src/modules/m_nonicks.cpp index f2aa7a66e..8aa072854 100644 --- a/src/modules/m_nonicks.cpp +++ b/src/modules/m_nonicks.cpp @@ -64,7 +64,7 @@ class ModuleNoNickChange : public Module for (UCListIter i = user->chans.begin(); i != user->chans.end(); i++) { - Channel* curr = *i; + Channel* curr = i->chan; ModResult res = ServerInstance->CheckExemption(user,curr,"nonick"); diff --git a/src/modules/m_operprefix.cpp b/src/modules/m_operprefix.cpp index e49077a1e..c7858f401 100644 --- a/src/modules/m_operprefix.cpp +++ b/src/modules/m_operprefix.cpp @@ -85,7 +85,7 @@ class ModuleOperPrefixMode : public Module { for (UCListIter v = user->chans.begin(); v != user->chans.end(); v++) { - PushChanMode(*v, user); + PushChanMode(v->chan, user); } } } |
