diff --git a/src/Message.cpp b/src/Message.cpp index 7d9d243f..fee78e39 100644 --- a/src/Message.cpp +++ b/src/Message.cpp @@ -100,7 +100,7 @@ CString CMessage::ToString(unsigned int uFlags) const for (unsigned int uIdx = 0; uIdx < uParams; ++uIdx) { const CString& sParam = m_vsParams[uIdx]; sMessage += " "; - if (uIdx == uParams - 1 && (sParam.StartsWith(":") || sParam.Contains(" "))) { + if (uIdx == uParams - 1 && (sParam.empty() || sParam.StartsWith(":") || sParam.Contains(" "))) { sMessage += ":"; } sMessage += sParam; diff --git a/test/MessageTest.cpp b/test/MessageTest.cpp index 2d088c9e..7e1c93ed 100644 --- a/test/MessageTest.cpp +++ b/test/MessageTest.cpp @@ -43,6 +43,7 @@ TEST(MessageTest, ToString) { EXPECT_EQ(":irc.znc.in CMD p1", CMessage(":irc.znc.in CMD p1").ToString()); EXPECT_EQ(":irc.znc.in CMD p1 p2", CMessage(":irc.znc.in CMD p1 p2").ToString()); EXPECT_EQ(":irc.znc.in CMD :p p p", CMessage(":irc.znc.in CMD :p p p").ToString()); + EXPECT_EQ(":irc.znc.in CMD :", CMessage(":irc.znc.in CMD :").ToString()); EXPECT_EQ("CMD", CMessage(CNick(), "CMD", {}).ToString()); EXPECT_EQ("CMD p1", CMessage(CNick(), "CMD", {"p1"}).ToString()); @@ -53,6 +54,7 @@ TEST(MessageTest, ToString) { EXPECT_EQ(":irc.znc.in CMD p1", CMessage(CNick(":irc.znc.in"), "CMD", {"p1"}).ToString()); EXPECT_EQ(":irc.znc.in CMD p1 p2", CMessage(CNick(":irc.znc.in"), "CMD", {"p1", "p2"}).ToString()); EXPECT_EQ(":irc.znc.in CMD :p p p", CMessage(CNick(":irc.znc.in"), "CMD", {"p p p"}).ToString()); + EXPECT_EQ(":irc.znc.in CMD :", CMessage(CNick(":irc.znc.in"), "CMD", {""}).ToString()); } TEST(MessageTest, FormatFlags) {