aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/m_timedmodes.cpp
diff options
context:
space:
mode:
authorGravatar Jackmcbarn2010-08-16 09:55:10 -0400
committerGravatar Jackmcbarn2010-08-16 09:55:10 -0400
commitbfa07a63244f189690b2880f830fe20163493d14 (patch)
tree530d30be6401e6411f6eeca451f72f6eb58702e6 /src/modules/m_timedmodes.cpp
parentFix compile error (diff)
Fix some minor bugs in m_timedmodes
Diffstat (limited to 'src/modules/m_timedmodes.cpp')
-rw-r--r--src/modules/m_timedmodes.cpp37
1 files changed, 18 insertions, 19 deletions
diff --git a/src/modules/m_timedmodes.cpp b/src/modules/m_timedmodes.cpp
index 383c1f192..5add0e207 100644
--- a/src/modules/m_timedmodes.cpp
+++ b/src/modules/m_timedmodes.cpp
@@ -135,14 +135,14 @@ class CommandTmode : public Command
user->WriteNumeric(953, "%s %s :End of channel timed modes", user->nick.c_str(), channel->name.c_str());
return CMD_SUCCESS;
}
- unsigned int maxsize = 0;
+ unsigned int maxsize = 30;
for (limitlist::iterator it = chanlimits.begin(); it != chanlimits.end(); ++it)
if (InspIRCd::Match(channel->name, it->mask)) {
maxsize = it->limit;
break;
}
timedmodes* existing = tmodes.get(channel);
- if (existing && existing->size() >= maxsize)
+ if ((existing && existing->size() >= maxsize) || maxsize == 0)
{
user->WriteServ("NOTICE " + user->nick + " :Channel " + channel->name + " timedmodes list is full");
return CMD_FAILURE;
@@ -271,24 +271,23 @@ class ModuleTimedModes : public Module
std::back_inserter(newsequence), &modeChangeLessThan);
cmd.current->modes.sequence = newsequence;
cmd.toannounce = modeschanged;
- } else {
- std::vector<irc::modechange> sortedchanged = modeschanged.sequence;
- stable_sort(sortedchanged.begin(), sortedchanged.end(), &modeChangeLessThan);
- timedmodes* existing = cmd.tmodes.get(dest);
- if(!existing) return;
- for (timedmodes::iterator i = existing->begin(); i != existing->end();)
- {
- std::vector<irc::modechange> newsequence;
- set_difference(i->modes.sequence.begin(), i->modes.sequence.end(),
- sortedchanged.begin(), sortedchanged.end(),
- std::back_inserter(newsequence), &modeChangeLessThan);
- i->modes.sequence = newsequence;
- if(i->modes.sequence.empty()) {
- i = existing->erase(i);
- continue;
- }
- ++i;
+ }
+ std::vector<irc::modechange> sortedchanged = modeschanged.sequence;
+ stable_sort(sortedchanged.begin(), sortedchanged.end(), &modeChangeLessThan);
+ timedmodes* existing = cmd.tmodes.get(dest);
+ if(!existing) return;
+ for (timedmodes::iterator i = existing->begin(); i != existing->end();)
+ {
+ std::vector<irc::modechange> newsequence;
+ set_difference(i->modes.sequence.begin(), i->modes.sequence.end(),
+ sortedchanged.begin(), sortedchanged.end(),
+ std::back_inserter(newsequence), &modeChangeLessThan);
+ i->modes.sequence = newsequence;
+ if(i->modes.sequence.empty()) {
+ i = existing->erase(i);
+ continue;
}
+ ++i;
}
}