diff options
| author | 2010-02-09 13:30:58 -0600 | |
|---|---|---|
| committer | 2010-08-03 17:32:35 -0400 | |
| commit | e75257aced7e5c715537e5cdf64e504240560ae1 (patch) | |
| tree | 0dc2675d679775b5d480196ee247c2c3b88721be /src/mode.cpp | |
| parent | Implement missing modechange constructors (diff) | |
Fix some mode letter sorting bugs
Diffstat (limited to 'src/mode.cpp')
| -rw-r--r-- | src/mode.cpp | 12 |
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; } |
