aboutsummaryrefslogtreecommitdiffstats
path: root/src/mode.cpp
diff options
context:
space:
mode:
authorGravatar Daniel De Graaf2010-02-09 13:30:58 -0600
committerGravatar Daniel De Graaf2010-08-03 17:32:35 -0400
commite75257aced7e5c715537e5cdf64e504240560ae1 (patch)
tree0dc2675d679775b5d480196ee247c2c3b88721be /src/mode.cpp
parentImplement missing modechange constructors (diff)
Fix some mode letter sorting bugs
Diffstat (limited to 'src/mode.cpp')
-rw-r--r--src/mode.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/mode.cpp b/src/mode.cpp
index d1425ba24..f39cce2ca 100644
--- a/src/mode.cpp
+++ b/src/mode.cpp
@@ -467,7 +467,7 @@ void ModeParser::Parse(const std::vector<std::string>& parameters, User *user, E
unsigned int param_at = 2;
bool adding = true;
- for (std::string::const_iterator letter = parameters[2].begin(); letter != parameters[2].end(); letter++)
+ for (std::string::const_iterator letter = parameters[1].begin(); letter != parameters[1].end(); letter++)
{
unsigned char modechar = *letter;
if (modechar == '+' || modechar == '-')
@@ -758,9 +758,10 @@ std::string ModeParser::UserModeList()
for(ModeIDIter id; id; id++)
{
ModeHandler* mh = FindMode(id);
- if(mh->GetModeType() == MODETYPE_USER)
+ if(mh && mh->GetModeType() == MODETYPE_USER)
modestr[pointer++] = mh->GetModeChar();
}
+ std::sort(modestr, modestr + pointer);
modestr[pointer++] = 0;
return modestr;
}
@@ -776,7 +777,8 @@ std::string ModeParser::ChannelModeList()
if (mh && mh->GetModeType() == MODETYPE_CHANNEL)
modestr[pointer++] = mh->GetModeChar();
}
- modestr[pointer++] = 0;
+ modestr[pointer] = 0;
+ std::sort(modestr, modestr + pointer);
return modestr;
}
@@ -849,6 +851,10 @@ std::string ModeParser::GiveModeList(ModeType m)
}
}
+ std::sort(type1.begin(), type1.end());
+ std::sort(type2.begin(), type2.end());
+ std::sort(type3.begin(), type3.end());
+ std::sort(type4.begin(), type4.end());
return type1 + "," + type2 + "," + type3 + "," + type4;
}