1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-30 14:56:39 +02:00

irc: fix display of self messages in case of message split failure

When the message sends inconsistent max lengths in message 005, the split of
self message fails and causes a display issue: the channel name is displayed
with the message:

  nick | #channel :this is a test

instead of:

  nick | this is a test
This commit is contained in:
Sébastien Helleu
2024-01-05 21:17:19 +01:00
parent 86e1af7ab9
commit 43bb20c4c3
3 changed files with 26 additions and 6 deletions
@@ -1137,6 +1137,7 @@ TEST(IrcMessage, Split)
struct t_hashtable *hashtable;
const char *ptr_msg, *pos1, *pos2;
char batch_ref[512], msg[4096];
int old_nick_max_length;
server = irc_server_alloc ("test_split_msg");
CHECK(server);
@@ -1552,6 +1553,21 @@ TEST(IrcMessage, Split)
(const char *)hashtable_get (hashtable, "args1"));
hashtable_free (hashtable);
/* PRIVMSG with small content but inconsistent max length: no split */
old_nick_max_length = server->nick_max_length;
server->nick_max_length = 4096;
hashtable = irc_message_split (server, "PRIVMSG #channel :test");
CHECK(hashtable);
LONGS_EQUAL(3, hashtable->items_count);
STRCMP_EQUAL("1",
(const char *)hashtable_get (hashtable, "count"));
STRCMP_EQUAL("PRIVMSG #channel :test",
(const char *)hashtable_get (hashtable, "msg1"));
STRCMP_EQUAL("test",
(const char *)hashtable_get (hashtable, "args1"));
hashtable_free (hashtable);
server->nick_max_length = old_nick_max_length;
/* PRIVMSG with 512 bytes of content: 1 split */
hashtable = irc_message_split (server,
"PRIVMSG #channel :" LOREM_IPSUM_512);