Make "cbfd" a gdb_bfd_ref_ptr

This changes program_space::cbfd to be a gdb_bfd_ref_ptr.  This makes
it somewhat less error-prone to use, because now it manages the
reference counting automatically.

Tested by the buildbot.

2018-05-16  Tom Tromey  <tom@tromey.com>

	* gdbcore.h (core_bfd): Redefine.
	* corelow.c (core_target::close): Update.
	(core_target_open): Update.
	* progspace.h (struct program_space) <cbfd>: Now a
	gdb_bfd_ref_ptr.
This commit is contained in:
Tom Tromey 2018-05-11 12:36:19 -06:00
parent 921222e2e8
commit 06333fea76
4 changed files with 13 additions and 5 deletions

View file

@ -270,8 +270,7 @@ core_target::close ()
comments in clear_solib in solib.c. */
clear_solib ();
gdb_bfd_unref (core_bfd);
core_bfd = NULL;
current_program_space->cbfd.reset (nullptr);
}
/* Core targets are heap-allocated (see core_target_open), so here
@ -406,7 +405,7 @@ core_target_open (const char *arg, int from_tty)
filename.get (), bfd_errmsg (bfd_get_error ()));
}
core_bfd = temp_bfd.release ();
current_program_space->cbfd = std::move (temp_bfd);
core_target *target = new core_target ();