Mercurial > irccd
changeset 2:3fe22529f66c
Irccdctl: invalid alias arguments destructuration
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 09 Feb 2016 12:49:27 +0100 |
parents | e80d7e8590a2 |
children | 2822100d8b42 |
files | irccdctl/irccdctl.cpp |
diffstat | 1 files changed, 5 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/irccdctl/irccdctl.cpp Tue Feb 09 12:08:32 2016 +0100 +++ b/irccdctl/irccdctl.cpp Tue Feb 09 12:49:27 2016 +0100 @@ -17,6 +17,7 @@ */ #include <algorithm> +#include <cassert> #include <iterator> #include <memory> #include <string> @@ -349,7 +350,7 @@ for (const AliasCommand &cmd : alias) { std::vector<std::string> args(argsCopy); std::vector<std::string> cmdArgs; - std::vector<std::string>::difference_type toremove = 0; + std::vector<std::string>::size_type toremove = 0; /* 1. Append command name before */ cmdArgs.push_back(cmd.command()); @@ -362,12 +363,14 @@ cmdArgs.push_back(args[arg.index()]); if (arg.index() + 1 > toremove) - toremove += 1; + toremove = arg.index() + 1; } else { cmdArgs.push_back(arg.value()); } } + assert(toremove <= args.size()); + /* 2. Remove the arguments that been placed in placeholders */ args.erase(args.begin(), args.begin() + toremove);