diff --git a/ChangeLog.adoc b/ChangeLog.adoc index 4fd6f7922..126149954 100644 --- a/ChangeLog.adoc +++ b/ChangeLog.adoc @@ -40,6 +40,7 @@ Bug fixes:: * core: fix delayed refresh when the signal SIGWINCH is received (terminal resized), send signal "signal_sigwinch" after refreshes (issue #902) * irc: fix parsing of message 324 (modes) when there is a colon before the modes (issue #913) + * relay: remove buffer from synchronized buffers when it is closed (fix memory leak) Build:: diff --git a/src/plugins/relay/weechat/relay-weechat-protocol.c b/src/plugins/relay/weechat/relay-weechat-protocol.c index 1092658e9..048e7c17a 100644 --- a/src/plugins/relay/weechat/relay-weechat-protocol.c +++ b/src/plugins/relay/weechat/relay-weechat-protocol.c @@ -755,14 +755,20 @@ relay_weechat_protocol_signal_buffer_cb (const void *pointer, void *data, { snprintf (cmd_hdata, sizeof (cmd_hdata), "buffer:0x%lx", (long unsigned int)ptr_buffer); - weechat_hashtable_remove (RELAY_WEECHAT_DATA(ptr_client, buffers_nicklist), - ptr_buffer); relay_weechat_msg_add_hdata (msg, cmd_hdata, "number,full_name"); relay_weechat_msg_send (ptr_client, msg); relay_weechat_msg_free (msg); } } + + /* remove buffer from hashtables */ + weechat_hashtable_remove ( + RELAY_WEECHAT_DATA(ptr_client, buffers_sync), + weechat_buffer_get_string (ptr_buffer, "full_name")); + weechat_hashtable_remove ( + RELAY_WEECHAT_DATA(ptr_client, buffers_nicklist), + ptr_buffer); } return WEECHAT_RC_OK;