From 9749b65f7e67bbee55e8708e571f5cff79b1bdbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Helleu?= Date: Thu, 15 Jan 2015 22:43:08 +0100 Subject: [PATCH] irc: fix crash in buffer close when server name is the same as a channel name (closes #305) --- ChangeLog.asciidoc | 5 +++++ src/plugins/irc/irc-channel.c | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ChangeLog.asciidoc b/ChangeLog.asciidoc index 1f8567574..02c19a861 100644 --- a/ChangeLog.asciidoc +++ b/ChangeLog.asciidoc @@ -20,6 +20,11 @@ https://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes] * core: add priority in plugins to initialize them in order * doc: add Russian man page +=== Bugs fixed + +* irc: fix crash in buffer close when server name is the same as a channel name + (closes #305) + == Version 1.1 (2015-01-11) === New features diff --git a/src/plugins/irc/irc-channel.c b/src/plugins/irc/irc-channel.c index 7c031e417..f5ce825e0 100644 --- a/src/plugins/irc/irc-channel.c +++ b/src/plugins/irc/irc-channel.c @@ -174,7 +174,7 @@ irc_channel_search_buffer (struct t_irc_server *server, { struct t_hdata *hdata_buffer; struct t_gui_buffer *ptr_buffer; - const char *ptr_server_name, *ptr_channel_name; + const char *ptr_type, *ptr_server_name, *ptr_channel_name; hdata_buffer = weechat_hdata_get ("buffer"); ptr_buffer = weechat_hdata_get_list (hdata_buffer, "gui_buffers"); @@ -184,12 +184,15 @@ irc_channel_search_buffer (struct t_irc_server *server, if (weechat_buffer_get_pointer (ptr_buffer, "plugin") == weechat_irc_plugin) { + ptr_type = weechat_buffer_get_string (ptr_buffer, "localvar_type"); ptr_server_name = weechat_buffer_get_string (ptr_buffer, "localvar_server"); ptr_channel_name = weechat_buffer_get_string (ptr_buffer, "localvar_channel"); - if (ptr_server_name && ptr_server_name[0] + if (ptr_type && ptr_type[0] + && ptr_server_name && ptr_server_name[0] && ptr_channel_name && ptr_channel_name[0] + && (strcmp (ptr_type, "channel") == 0) && (strcmp (ptr_server_name, server->name) == 0) && ((irc_server_strcasecmp (server, ptr_channel_name, channel_name) == 0)))