Correctly handle the usage of ! as a IRC user mode indicator

Since “!” is also the separator between the nickname and the user hostname,
having “!” as the user mode (e.g. !nick!~some@host.bla) would cause the nick
to be empty. Now we skip it if it is a valid user mode indicator.
This commit is contained in:
Florent Le Coz
2014-05-14 21:48:38 +02:00
parent 634e7cf125
commit 712b7bdfdf
2 changed files with 20 additions and 3 deletions
+3 -3
View File
@@ -7,14 +7,14 @@ IrcUser::IrcUser(const std::string& name,
{
if (name.empty())
return ;
const std::string::size_type sep = name.find("!");
const std::map<char, char>::const_iterator prefix = prefix_to_mode.find(name[0]);
const size_t name_begin = prefix == prefix_to_mode.end()? 0: 1;
const std::string::size_type name_begin = prefix == prefix_to_mode.end()? 0: 1;
const std::string::size_type sep = name.find("!", name_begin);
if (sep == std::string::npos)
this->nick = name.substr(name_begin);
else
{
this->nick = name.substr(name_begin, sep);
this->nick = name.substr(name_begin, sep-name_begin);
this->host = name.substr(sep+1);
}
if (prefix != prefix_to_mode.end())