diff --git a/src/Message.cpp b/src/Message.cpp index d8615841..a56decf9 100644 --- a/src/Message.cpp +++ b/src/Message.cpp @@ -96,9 +96,11 @@ CString CMessage::ToString(unsigned int uFlags) const } // - for (const CString& sParam : m_vsParams) { + unsigned uParams = m_vsParams.size(); + for (unsigned int uIdx = 0; uIdx < uParams; ++uIdx) { + const CString& sParam = m_vsParams[uIdx]; sMessage += " "; - if (sParam.Contains(" ")) { + if (uIdx == uParams - 1 && (sParam.StartsWith(":") || sParam.Contains(" "))) { sMessage += ":"; } sMessage += sParam; diff --git a/test/MessageTest.cpp b/test/MessageTest.cpp index 77d56a69..351fa930 100644 --- a/test/MessageTest.cpp +++ b/test/MessageTest.cpp @@ -163,15 +163,15 @@ TEST(MessageTest, PrivCTCP) { } TEST(MessageTest, PrivMsg) { - CMessage msg(":sender PRIVMSG receiver :text"); + CMessage msg(":sender PRIVMSG receiver :foo bar"); CPrivMessage& priv = static_cast(msg); EXPECT_EQ("sender", priv.GetNick().GetNick()); EXPECT_EQ("PRIVMSG", priv.GetCommand()); - EXPECT_EQ("text", priv.GetText()); - - priv.SetText("foo bar"); EXPECT_EQ("foo bar", priv.GetText()); - EXPECT_EQ(":sender PRIVMSG receiver :foo bar", priv.ToString()); + + priv.SetText(":)"); + EXPECT_EQ(":)", priv.GetText()); + EXPECT_EQ(":sender PRIVMSG receiver ::)", priv.ToString()); } TEST(MessageTest, Quit) {