diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | src/plugins/irc/irc-protocol.c | 33 |
2 files changed, 24 insertions, 13 deletions
@@ -1,7 +1,7 @@ WeeChat ChangeLog ================= Sébastien Helleu <flashcode@flashtux.org> -v0.3.5-rc2, 2011-05-02 +v0.3.5-rc2, 2011-05-06 Version 0.3.5 (under dev!) @@ -63,6 +63,8 @@ Version 0.3.5 (under dev!) (plugins: irc, relay, xfer, scripts) * aspell: add section "option" in aspell.conf for speller options (task #11083) * aspell: fix spellers used after switch of window (bug #32811) +* irc: fix parsing of message 332 when no topic neither colon are found + (bug with bip proxy) * irc: fix nick color in private when option irc.look.nick_color_force is changed * irc: fix tags for messages sent with /msg command (bug #33169) diff --git a/src/plugins/irc/irc-protocol.c b/src/plugins/irc/irc-protocol.c index 28eefd9fa..7e7ad300e 100644 --- a/src/plugins/irc/irc-protocol.c +++ b/src/plugins/irc/irc-protocol.c @@ -2838,27 +2838,36 @@ IRC_PROTOCOL_CALLBACK(332) * :server 332 mynick #channel :topic of channel */ - IRC_PROTOCOL_MIN_ARGS(5); + IRC_PROTOCOL_MIN_ARGS(4); - pos_topic = (argv_eol[4][0] == ':') ? argv_eol[4] + 1 : argv_eol[4]; + pos_topic = NULL; + if (argc >= 5) + pos_topic = (argv_eol[4][0] == ':') ? argv_eol[4] + 1 : argv_eol[4]; ptr_channel = irc_channel_search (server, argv[3]); if (ptr_channel && ptr_channel->nicks) { - topic_no_color = (weechat_config_boolean (irc_config_network_colors_receive)) ? - NULL : irc_color_decode (pos_topic, 0); - irc_channel_set_topic (ptr_channel, - (topic_no_color) ? topic_no_color : pos_topic); - if (topic_no_color) - free (topic_no_color); + if (pos_topic) + { + topic_no_color = (weechat_config_boolean (irc_config_network_colors_receive)) ? + NULL : irc_color_decode (pos_topic, 0); + irc_channel_set_topic (ptr_channel, + (topic_no_color) ? topic_no_color : pos_topic); + if (topic_no_color) + free (topic_no_color); + } ptr_buffer = ptr_channel->buffer; } else ptr_buffer = server->buffer; - - topic_color = irc_color_decode (pos_topic, - (weechat_config_boolean (irc_config_network_colors_receive)) ? 1 : 0); + + topic_color = NULL; + if (pos_topic) + { + topic_color = irc_color_decode (pos_topic, + (weechat_config_boolean (irc_config_network_colors_receive)) ? 1 : 0); + } weechat_printf_tags (irc_msgbuffer_get_target_buffer (server, NULL, command, NULL, ptr_buffer), @@ -2868,7 +2877,7 @@ IRC_PROTOCOL_CALLBACK(332) IRC_COLOR_CHAT_CHANNEL, argv[3], IRC_COLOR_CHAT, - (topic_color) ? topic_color : pos_topic, + (topic_color) ? topic_color : ((pos_topic) ? pos_topic : ""), IRC_COLOR_CHAT); if (topic_color) free (topic_color); |