summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGary Benson <gbenson@redhat.com>2016-02-17 14:38:36 +0000
committerGary Benson <gbenson@redhat.com>2016-02-17 16:47:11 +0000
commit88178e828a0d1af133c19d6165e4d5ee59304adf (patch)
treee7fad247c76fe4c4f09767b960c07ffbf06b7eb5
parentb3e3e0b7813cda26829ddf73ba3f2d98bb391720 (diff)
downloadbinutils-gdb-88178e828a0d1af133c19d6165e4d5ee59304adf.tar.gz
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.
-rw-r--r--gdb/ChangeLog4
-rw-r--r--gdb/exec.c5
2 files changed, 9 insertions, 0 deletions
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 <gbenson@redhat.com>
+
+ * exec.c (exec_file_locate_attach): Add missing cleanup.
+
2016-02-16 Don Breazeal <donb@codesourcery.com>
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.