relay: update buffers synchronization when buffers are renamed (closes #1428)

v2.8-utf8proc
Sébastien Helleu 2020-01-12 17:03:16 +01:00
parent 1fac6fd404
commit b79cd6d546
2 changed files with 24 additions and 0 deletions

View File

@ -31,6 +31,7 @@ Bug fixes::
* core: fix evaluation of condition with nested "if" (issue #1434)
* irc: case-insensitive comparison on incoming CTCP command, force upper case on CTCP replies (issue #1439)
* irc: fix memory leak when the channel topic is changed
* relay: update buffers synchronization when buffers are renamed (issue #1428)
* xfer: send signal "xfer_ended" after the received file has been renamed (issue #1438)
Build::

View File

@ -501,6 +501,8 @@ relay_weechat_protocol_signal_buffer_cb (const void *pointer, void *data,
struct t_gui_buffer *ptr_buffer;
struct t_relay_weechat_msg *msg;
char cmd_hdata[64], str_signal[128];
const char *ptr_old_full_name;
int *ptr_old_flags, flags;
/* make C compiler happy */
(void) data;
@ -640,6 +642,27 @@ relay_weechat_protocol_signal_buffer_cb (const void *pointer, void *data,
if (!ptr_buffer)
return WEECHAT_RC_OK;
/* rename old buffer name if present in hashtable "buffers_sync" */
ptr_old_full_name = weechat_buffer_get_string (ptr_buffer,
"old_full_name");
if (ptr_old_full_name && ptr_old_full_name[0])
{
ptr_old_flags = weechat_hashtable_get (
RELAY_WEECHAT_DATA(ptr_client, buffers_sync),
ptr_old_full_name);
if (ptr_old_flags)
{
flags = *ptr_old_flags;
weechat_hashtable_remove (
RELAY_WEECHAT_DATA(ptr_client, buffers_sync),
ptr_old_full_name);
weechat_hashtable_set (
RELAY_WEECHAT_DATA(ptr_client, buffers_sync),
weechat_buffer_get_string (ptr_buffer, "full_name"),
&flags);
}
}
/* send signal only if sync with flag "buffers" or "buffer" */
if (relay_weechat_protocol_is_sync (ptr_client, ptr_buffer,
RELAY_WEECHAT_PROTOCOL_SYNC_BUFFERS |