diff --git a/ChangeLog b/ChangeLog index 09b0b4529..db815ea59 100644 --- a/ChangeLog +++ b/ChangeLog @@ -14,6 +14,7 @@ Version 0.3.6 (under dev!) * irc: fix memory leak in message parser (when called from other plugins like relay) (bug #33387) * irc: fix memory leak on plugin unload (free ignores) +* relay: fix memory leak (free some parsed messages) (bug #33387) * logger: add option logger.file.flush_delay (task #11118) Version 0.3.5 (2011-05-15) diff --git a/src/plugins/relay/relay-client-irc.c b/src/plugins/relay/relay-client-irc.c index 963c04b57..3b5799e75 100644 --- a/src/plugins/relay/relay-client-irc.c +++ b/src/plugins/relay/relay-client-irc.c @@ -248,6 +248,8 @@ relay_client_irc_signal_irc_in2_cb (void *data, const char *signal, irc_command, irc_args); } + + weechat_hashtable_free (hash_parsed); } return WEECHAT_RC_OK; @@ -739,7 +741,7 @@ relay_client_irc_recv_one_msg (struct t_relay_client *client, char *data) RELAY_IRC_DATA(client, address)); relay_client_set_status (client, RELAY_STATUS_DISCONNECTED); - return; + goto end; } if (irc_args && irc_args[0]) { @@ -760,7 +762,7 @@ relay_client_irc_recv_one_msg (struct t_relay_client *client, char *data) RELAY_IRC_DATA(client, address)); relay_client_set_status (client, RELAY_STATUS_DISCONNECTED); - return; + goto end; } RELAY_IRC_DATA(client, connected) = 1;