diff options
author | Tom Tromey <tromey@redhat.com> | 2009-01-08 16:32:30 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2009-01-08 16:32:30 +0000 |
commit | f75455520e7d4fa0f867d2f4a8f3dffd1a0595fc (patch) | |
tree | 67b7301ed29325c649f0f2da4745a855bf3ccb28 /gdb/exec.c | |
parent | e77b97d43359df06713529ec054ed1ed8afb3e37 (diff) | |
download | gdb-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.c | 11 |
1 files changed, 9 insertions, 2 deletions
@@ -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); |