summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--src/plugins/irc/irc-protocol.c33
2 files changed, 24 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog
index 368cbb127..b68227bb6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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);