forked from Imagelibrary/binutils-gdb
gdb: make thread_info::m_thread_fsm a std::unique_ptr
While working on function calls, I realized that the thread_fsm member of struct thread_info is a raw pointer to a resource it owns. This commit changes the type of the thread_fsm member to a std::unique_ptr in order to signify this ownership relationship and slightly ease resource management (no need to manually call delete). To ensure consistent use, the field is made a private member (m_thread_fsm). The setter method (set_thread_fsm) can then check that it is incorrect to associate a FSM to a thread_info object if another one is already in place. This is ensured by an assertion. The function run_inferior_call takes an argument as a pointer to a call_thread_fsm and installs it in it in a thread_info instance. Also change this function's signature to accept a unique_ptr in order to signify that the ownership of the call_thread_fsm is transferred during the call. No user visible change expected after this commit. Tested on x86_64-linux with no regression observed. Change-Id: Ia1224f72a4afa247801ce6650ce82f90224a9ae8
This commit is contained in:
@@ -10830,8 +10830,10 @@ until_break_command (const char *arg, int from_tty, int anywhere)
|
||||
breakpoints.emplace_back (std::move (location_breakpoint));
|
||||
}
|
||||
|
||||
tp->thread_fsm = new until_break_fsm (command_interp (), tp->global_num,
|
||||
std::move (breakpoints));
|
||||
tp->set_thread_fsm
|
||||
(std::unique_ptr<thread_fsm>
|
||||
(new until_break_fsm (command_interp (), tp->global_num,
|
||||
std::move (breakpoints))));
|
||||
|
||||
if (lj_deleter)
|
||||
lj_deleter->release ();
|
||||
|
||||
Reference in New Issue
Block a user