From 88178e828a0d1af133c19d6165e4d5ee59304adf Mon Sep 17 00:00:00 2001 From: Gary Benson Date: Wed, 17 Feb 2016 14:38:36 +0000 Subject: [PATCH] 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. --- gdb/ChangeLog | 4 ++++ gdb/exec.c | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 327ce7bf87..e507dd181c 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 23c89c2521..0b8c0777f5 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.