From d4908ba8f30f144eb53baef0057517c3ec0b6cb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Helleu?= Date: Sat, 17 Jan 2015 14:38:34 +0100 Subject: [PATCH] irc: fix crash in buffer close when server name is the same as a channel name (closes #305) (cherry picked from commit 9749b65f7e67bbee55e8708e571f5cff79b1bdbe) --- ChangeLog.asciidoc | 7 +++++++ src/plugins/irc/irc-channel.c | 7 +++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ChangeLog.asciidoc b/ChangeLog.asciidoc index 8e2197cdc..9b262da5b 100644 --- a/ChangeLog.asciidoc +++ b/ChangeLog.asciidoc @@ -13,6 +13,13 @@ https://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes] (file 'ReleaseNotes.asciidoc' in sources). +== Version 1.1.1 (under dev) + +=== 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)))