From 45d5034ea018e4a47fc48259ece503b08c63ba38 Mon Sep 17 00:00:00 2001 From: Sebastien Helleu Date: Tue, 25 Dec 2012 16:58:18 +0100 Subject: [PATCH] irc: fix memory leak when updating modes of channel --- ChangeLog | 1 + src/plugins/irc/irc-mode.c | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 478e222fc..fb8d5c538 100644 --- a/ChangeLog +++ b/ChangeLog @@ -62,6 +62,7 @@ Version 0.4.0 (under dev!) aspell.check.suggestions (task #12061) * aspell: fix creation of spellers when number of dictionaries is different between two buffers +* irc: fix memory leak when updating modes of channel * irc: add tags "irc_nick1_xxx" and "irc_nick2_yyy" in message displayed for command "NICK" * irc: return git version in CTCP VERSION and FINGER by default, add "$git" diff --git a/src/plugins/irc/irc-mode.c b/src/plugins/irc/irc-mode.c index 1ea11679b..62491c986 100644 --- a/src/plugins/irc/irc-mode.c +++ b/src/plugins/irc/irc-mode.c @@ -241,7 +241,7 @@ irc_mode_channel_update (struct t_irc_server *server, snprintf (str_temp, length, "%s %s", new_modes, new_args); if (channel->modes) free (channel->modes); - channel->modes = strdup (str_temp); + channel->modes = str_temp; } } else @@ -250,11 +250,12 @@ irc_mode_channel_update (struct t_irc_server *server, free (channel->modes); channel->modes = strdup (new_modes); } - - free (new_modes); - free (new_args); } + if (new_modes) + free (new_modes); + if (new_args) + free (new_args); if (str_modes) free (str_modes); if (argv)