summaryrefslogtreecommitdiff
path: root/src/mode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mode.cpp')
-rw-r--r--src/mode.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/mode.cpp b/src/mode.cpp
index d9dba196d..770e6a2e2 100644
--- a/src/mode.cpp
+++ b/src/mode.cpp
@@ -425,12 +425,15 @@ void ModeParser::Process(const std::vector<std::string>& parameters, User* user,
}
}
-void ModeParser::ModeParamsToChangeList(User* user, ModeType type, const std::vector<std::string>& parameters, Modes::ChangeList& changelist)
+void ModeParser::ModeParamsToChangeList(User* user, ModeType type, const std::vector<std::string>& parameters, Modes::ChangeList& changelist, unsigned int beginindex, unsigned int endindex)
{
- const std::string& mode_sequence = parameters[1];
+ if (endindex > parameters.size())
+ endindex = parameters.size();
+
+ const std::string& mode_sequence = parameters[beginindex];
bool adding = true;
- unsigned int param_at = 2;
+ unsigned int param_at = beginindex+1;
for (std::string::const_iterator letter = mode_sequence.begin(); letter != mode_sequence.end(); letter++)
{
@@ -450,7 +453,7 @@ void ModeParser::ModeParamsToChangeList(User* user, ModeType type, const std::ve
}
std::string parameter;
- if (mh->GetNumParams(adding) && param_at < parameters.size())
+ if (mh->GetNumParams(adding) && param_at < endindex)
parameter = parameters[param_at++];
changelist.push(mh, adding, parameter);