Add missing cleanup in exec_file_locate_attach
authorGary Benson <gbenson@redhat.com>
Wed, 17 Feb 2016 14:38:36 +0000 (14:38 +0000)
committerGary Benson <gbenson@redhat.com>
Wed, 17 Feb 2016 16:47:11 +0000 (16:47 +0000)
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
gdb/exec.c

index 327ce7bf87941473b1b493c6e238bf0453b07775..e507dd181c6f16a05ae5663342cdbd6039f667b2 100644 (file)
@@ -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
index 23c89c252154feba1c9293beeb140bd83850393e..0b8c0777f52c2cb54230ac78bc2a6d0c704116b7 100644 (file)
@@ -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.