From 20ef7d19f7b684ea34ff1cd96450744920ab4a65 Mon Sep 17 00:00:00 2001 From: linuxdaemon Date: Wed, 20 Feb 2019 01:29:15 -0600 Subject: Fix not showing all modes on a channel Whenever a mode has a parameter, no modes past that mode will be shown in RPL_CHANNELMODEIS. References to items in a vector break when the vector's size is changed. --- src/coremods/core_user/cmd_mode.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/coremods/core_user/cmd_mode.cpp b/src/coremods/core_user/cmd_mode.cpp index f58a41aa4..228c352c0 100644 --- a/src/coremods/core_user/cmd_mode.cpp +++ b/src/coremods/core_user/cmd_mode.cpp @@ -152,7 +152,8 @@ namespace // the user is a member of the channel. bool show_secret = chan->HasUser(user); - std::string& modes = num.push("+").GetParams().back(); + size_t modepos = num.push("+").GetParams().size() - 1; + std::string modes; std::string param; for (unsigned char chr = 65; chr < 123; ++chr) { @@ -182,6 +183,7 @@ namespace num.push(param); param.clear(); } + num.GetParams()[modepos].append(modes); } } -- cgit v1.2.3