From: Gary Benson Date: Wed, 17 Feb 2016 14:38:36 +0000 (+0000) Subject: Add missing cleanup in exec_file_locate_attach X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=88178e828a0d1af133c19d6165e4d5ee59304adf;p=binutils-gdb.git Add missing cleanup in exec_file_locate_attach exec_file_locate_attach allocates memory for full_exec_path (using either exec_file_find, source_full_path_of or xstrdup) but this memory is never freed. This commit adds the necessary cleanup. gdb/ChangeLog: * exec.c (exec_file_locate_attach): Add missing cleanup. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 327ce7bf879..e507dd181c6 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,7 @@ +2016-02-17 Gary Benson + + * exec.c (exec_file_locate_attach): Add missing cleanup. + 2016-02-16 Don Breazeal PR remote/19496 diff --git a/gdb/exec.c b/gdb/exec.c index 23c89c25215..0b8c0777f52 100644 --- a/gdb/exec.c +++ b/gdb/exec.c @@ -141,6 +141,7 @@ void exec_file_locate_attach (int pid, int from_tty) { char *exec_file, *full_exec_path = NULL; + struct cleanup *old_chain; /* Do nothing if we already have an executable filename. */ exec_file = (char *) get_exec_file (0); @@ -170,8 +171,12 @@ exec_file_locate_attach (int pid, int from_tty) full_exec_path = xstrdup (exec_file); } + old_chain = make_cleanup (xfree, full_exec_path); + exec_file_attach (full_exec_path, from_tty); symbol_file_add_main (full_exec_path, from_tty); + + do_cleanups (old_chain); } /* Set FILENAME as the new exec file.