aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/irc/irc-ctcp.c
diff options
context:
space:
mode:
authorSébastien Helleu <flashcode@flashtux.org>2014-08-09 19:54:39 +0200
committerSébastien Helleu <flashcode@flashtux.org>2014-08-09 19:54:39 +0200
commitb78b5575c3eeb3a61d078b1848c4167f65ee3b93 (patch)
tree6ee23c23ddbbbc20695962d3b467b56d83cbd261 /src/plugins/irc/irc-ctcp.c
parentcore: fix memory leak when removing script files (diff)
downloadweechat-b78b5575c3eeb3a61d078b1848c4167f65ee3b93.tar.xz
weechat-b78b5575c3eeb3a61d078b1848c4167f65ee3b93.zip
irc: fix memory leak in CTCP answer
Diffstat (limited to 'src/plugins/irc/irc-ctcp.c')
-rw-r--r--src/plugins/irc/irc-ctcp.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/src/plugins/irc/irc-ctcp.c b/src/plugins/irc/irc-ctcp.c
index 00f849e4b..510d07633 100644
--- a/src/plugins/irc/irc-ctcp.c
+++ b/src/plugins/irc/irc-ctcp.c
@@ -417,17 +417,23 @@ irc_ctcp_replace_variables (struct t_irc_server *server, const char *format)
* Linux 2.6.32-5-amd64 / x86_64
*/
buf_uname = (struct utsname *)malloc (sizeof (struct utsname));
- if (buf_uname && (uname (buf_uname) >= 0))
+ if (buf_uname)
{
- snprintf (buf, sizeof (buf), "%s %s / %s",
- buf_uname->sysname, buf_uname->release,
- buf_uname->machine);
+ if (uname (buf_uname) >= 0)
+ {
+ snprintf (buf, sizeof (buf), "%s %s / %s",
+ buf_uname->sysname, buf_uname->release,
+ buf_uname->machine);
+ temp = weechat_string_replace (res, "$osinfo", buf);
+ free (res);
+ if (!temp)
+ {
+ free (buf_uname);
+ return NULL;
+ }
+ res = temp;
+ }
free (buf_uname);
- temp = weechat_string_replace (res, "$osinfo", buf);
- free (res);
- if (!temp)
- return NULL;
- res = temp;
}
/*