aboutsummaryrefslogtreecommitdiff
path: root/gdb/exec.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/exec.c')
-rw-r--r--gdb/exec.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/gdb/exec.c b/gdb/exec.c
index c8ec25a..2c9a74b 100644
--- a/gdb/exec.c
+++ b/gdb/exec.c
@@ -258,7 +258,9 @@ exec_file_attach (const char *filename, int from_tty)
this at the end of the function; but acquiring it now lets the
BFD cache return it if this call refers to the same file. */
gdb_bfd_ref (exec_bfd);
- cleanups = make_cleanup_bfd_unref (exec_bfd);
+ gdb_bfd_ref_ptr exec_bfd_holder (exec_bfd);
+
+ cleanups = make_cleanup (null_cleanup, NULL);
/* Remove any previous exec file. */
exec_close ();
@@ -333,11 +335,13 @@ exec_file_attach (const char *filename, int from_tty)
make_cleanup (xfree, canonical_pathname);
}
+ gdb_bfd_ref_ptr temp;
if (write_files && !load_via_target)
- exec_bfd = gdb_bfd_fopen (canonical_pathname, gnutarget,
- FOPEN_RUB, scratch_chan);
+ temp = gdb_bfd_fopen (canonical_pathname, gnutarget,
+ FOPEN_RUB, scratch_chan);
else
- exec_bfd = gdb_bfd_open (canonical_pathname, gnutarget, scratch_chan);
+ temp = gdb_bfd_open (canonical_pathname, gnutarget, scratch_chan);
+ exec_bfd = temp.release ();
if (!exec_bfd)
{