aboutsummaryrefslogtreecommitdiff
path: root/gdb/exec.c
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2009-01-08 16:32:30 +0000
committerTom Tromey <tromey@redhat.com>2009-01-08 16:32:30 +0000
commitf75455520e7d4fa0f867d2f4a8f3dffd1a0595fc (patch)
tree67b7301ed29325c649f0f2da4745a855bf3ccb28 /gdb/exec.c
parente77b97d43359df06713529ec054ed1ed8afb3e37 (diff)
downloadgdb-f75455520e7d4fa0f867d2f4a8f3dffd1a0595fc.zip
gdb-f75455520e7d4fa0f867d2f4a8f3dffd1a0595fc.tar.gz
gdb-f75455520e7d4fa0f867d2f4a8f3dffd1a0595fc.tar.bz2
PR breakpoints/9350:
* varobj.c (varobj_invalidate): Unconditionally free all_rootvarobj. * symfile.c (syms_from_objfile): Free local_addr when returning normally. * exec.c (exec_file_attach): Do cleanups before returning. (exec_file_command): Likewise. * corefile.c (reopen_exec_file): Do cleanups before returning. * breakpoint.c (insert_breakpoint_locations): Do cleanups before returning. (do_vec_free): New function. (update_global_location_list): Make a cleanup for old_locations. Do cleanups before returning. Remove unused variable 'e'. (find_condition_and_thread): Free result of parsing the expression. (print_it_typical): Do cleanups before returning. (breakpoint_re_set_one): Always free sals.sals.
Diffstat (limited to 'gdb/exec.c')
-rw-r--r--gdb/exec.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/gdb/exec.c b/gdb/exec.c
index 542af0e..8d8c1df 100644
--- a/gdb/exec.c
+++ b/gdb/exec.c
@@ -194,6 +194,7 @@ exec_file_attach (char *filename, int from_tty)
}
else
{
+ struct cleanup *cleanups;
char *scratch_pathname;
int scratch_chan;
@@ -228,7 +229,7 @@ exec_file_attach (char *filename, int from_tty)
via the exec_bfd->name pointer, so we need to make another copy and
leave exec_bfd as the new owner of the original copy. */
scratch_pathname = xstrdup (scratch_pathname);
- make_cleanup (xfree, scratch_pathname);
+ cleanups = make_cleanup (xfree, scratch_pathname);
if (!bfd_check_format (exec_bfd, bfd_object))
{
@@ -276,6 +277,8 @@ exec_file_attach (char *filename, int from_tty)
/* Tell display code (if any) about the changed file name. */
if (deprecated_exec_file_display_hook)
(*deprecated_exec_file_display_hook) (filename);
+
+ do_cleanups (cleanups);
}
bfd_cache_close_all ();
observer_notify_executable_changed ();
@@ -302,11 +305,13 @@ exec_file_command (char *args, int from_tty)
if (args)
{
+ struct cleanup *cleanups;
+
/* Scan through the args and pick up the first non option arg
as the filename. */
argv = gdb_buildargv (args);
- make_cleanup_freeargv (argv);
+ cleanups = make_cleanup_freeargv (argv);
for (; (*argv != NULL) && (**argv == '-'); argv++)
{;
@@ -317,6 +322,8 @@ exec_file_command (char *args, int from_tty)
filename = tilde_expand (*argv);
make_cleanup (xfree, filename);
exec_file_attach (filename, from_tty);
+
+ do_cleanups (cleanups);
}
else
exec_file_attach (NULL, from_tty);