aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules
diff options
context:
space:
mode:
authorGravatar Daniel De Graaf2010-04-13 12:47:42 -0500
committerGravatar Daniel De Graaf2010-08-03 17:32:42 -0400
commitc1a07677db2bb0b023d5eb3565353cb0843eefbf (patch)
tree5d2bae34ba9d411ce19e9179498d289b1d2c468d /src/modules
parentFix "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.cpp11
-rw-r--r--src/modules/m_channelban.cpp2
-rw-r--r--src/modules/m_check.cpp3
-rw-r--r--src/modules/m_delayjoin.cpp12
-rw-r--r--src/modules/m_nickflood.cpp4
-rw-r--r--src/modules/m_nonicks.cpp2
-rw-r--r--src/modules/m_operprefix.cpp2
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);
}
}
}