diff --git a/src/plugins/relay/relay-buffer.c b/src/plugins/relay/relay-buffer.c index 0a0235def..457505eae 100644 --- a/src/plugins/relay/relay-buffer.c +++ b/src/plugins/relay/relay-buffer.c @@ -174,6 +174,7 @@ relay_buffer_input_cb (const void *pointer, void *data, { struct t_relay_client *client, *ptr_client, *next_client; const char *ptr_remote_name, *ptr_remote_id; + int refresh; /* make C compiler happy */ (void) pointer; @@ -200,15 +201,20 @@ relay_buffer_input_cb (const void *pointer, void *data, /* purge old clients */ else if (weechat_strcmp (input_data, "p") == 0) { + refresh = 0; ptr_client = relay_clients; while (ptr_client) { next_client = ptr_client->next_client; if (RELAY_STATUS_HAS_ENDED(ptr_client->status)) + { relay_client_free (ptr_client); + refresh = 1; + } ptr_client = next_client; } - relay_buffer_refresh (WEECHAT_HOTLIST_MESSAGE); + if (refresh) + relay_buffer_refresh (WEECHAT_HOTLIST_MESSAGE); } /* quit relay buffer (close it) */ else if (weechat_strcmp (input_data, "q") == 0) diff --git a/src/plugins/xfer/xfer-buffer.c b/src/plugins/xfer/xfer-buffer.c index 051bc97f5..509d4c803 100644 --- a/src/plugins/xfer/xfer-buffer.c +++ b/src/plugins/xfer/xfer-buffer.c @@ -261,6 +261,7 @@ xfer_buffer_input_cb (const void *pointer, void *data, const char *input_data) { struct t_xfer *xfer, *ptr_xfer, *next_xfer; + int refresh; /* make C compiler happy */ (void) pointer; @@ -289,15 +290,20 @@ xfer_buffer_input_cb (const void *pointer, void *data, /* purge old xfer */ else if (weechat_strcmp (input_data, "p") == 0) { + refresh = 0; ptr_xfer = xfer_list; while (ptr_xfer) { next_xfer = ptr_xfer->next_xfer; if (XFER_HAS_ENDED(ptr_xfer->status)) + { xfer_free (ptr_xfer); + refresh = 1; + } ptr_xfer = next_xfer; } - xfer_buffer_refresh (WEECHAT_HOTLIST_MESSAGE); + if (refresh) + xfer_buffer_refresh (WEECHAT_HOTLIST_MESSAGE); } /* quit xfer buffer (close it) */ else if (weechat_strcmp (input_data, "q") == 0)