From 198e0e237590eeb571f15ea94048be4b50bd7114 Mon Sep 17 00:00:00 2001 From: Sebastien Helleu Date: Sat, 19 Apr 2008 12:02:06 +0200 Subject: [PATCH] Close all buffers created by a plugin when plugin is unloaded (bug #22978) --- src/plugins/plugin.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/plugins/plugin.c b/src/plugins/plugin.c index 1f827e8d5..b033c552a 100644 --- a/src/plugins/plugin.c +++ b/src/plugins/plugin.c @@ -564,6 +564,18 @@ plugin_remove (struct t_weechat_plugin *plugin) struct t_weechat_plugin *new_weechat_plugins; struct t_gui_buffer *ptr_buffer; + /* close buffers created by this plugin */ + for (ptr_buffer = gui_buffers; ptr_buffer; + ptr_buffer = ptr_buffer->next_buffer) + { + if (ptr_buffer->plugin == plugin) + { + ptr_buffer->close_callback = NULL; + ptr_buffer->close_callback_data = NULL; + gui_buffer_close (ptr_buffer, 1); + } + } + /* remove plugin from list */ if (last_weechat_plugin == plugin) last_weechat_plugin = plugin->prev_plugin; @@ -587,18 +599,6 @@ plugin_remove (struct t_weechat_plugin *plugin) /* remove all bar items */ gui_bar_item_free_all_plugin (plugin); - /* remove pointer to this plugin on buffers */ - for (ptr_buffer = gui_buffers; ptr_buffer; - ptr_buffer = ptr_buffer->next_buffer) - { - if (ptr_buffer->plugin == plugin) - { - ptr_buffer->plugin = NULL; - ptr_buffer->close_callback = NULL; - ptr_buffer->close_callback_data = NULL; - } - } - /* free data */ if (plugin->filename) free (plugin->filename);