From: Pedro Alves Date: Wed, 23 Jan 2019 18:58:30 +0000 (+0000) Subject: Use forward_scope_exit for scoped_finish_thread_state X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=77f0e74cbe2ee7e874432776a0394a3d2a7a4342;p=deliverable%2Fbinutils-gdb.git Use forward_scope_exit for scoped_finish_thread_state This reimplements the manually-written scoped_finish_thread_state class as a forward_scope_exit instantiation. forward_scope_exit has the same interface as scoped_finish_thread_state, so nothing else has to change. A forward_scope_exit is preferred over make_scope_exit here because infrun.c:normal_stop needs to wrap scoped_finish_thread_state in a gdb::optional. Since we need the type there, might as well use it everywhere. gdb/ChangeLog: 2019-01-23 Pedro Alves Andrew Burgess * gdbthread.h: Include "common/forward-scope-exit.h". (scoped_finish_thread_state): Redefine custom class in terms of forward_scope_exit. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index dff515d8ce..008208e6ec 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2019-01-23 Pedro Alves + Andrew Burgess + + * gdbthread.h: Include "common/forward-scope-exit.h". + (scoped_finish_thread_state): Redefine custom class in terms of + forward_scope_exit. + 2019-01-23 Pedro Alves Andrew Burgess diff --git a/gdb/gdbthread.h b/gdb/gdbthread.h index 95db69605e..c35a54e75d 100644 --- a/gdb/gdbthread.h +++ b/gdb/gdbthread.h @@ -32,6 +32,7 @@ struct symtab; #include "cli/cli-utils.h" #include "common/refcounted-object.h" #include "common-gdbthread.h" +#include "common/forward-scope-exit.h" struct inferior; @@ -612,31 +613,8 @@ extern void finish_thread_state (ptid_t ptid); /* Calls finish_thread_state on scope exit, unless release() is called to disengage. */ -class scoped_finish_thread_state -{ -public: - explicit scoped_finish_thread_state (ptid_t ptid) - : m_ptid (ptid) - {} - - ~scoped_finish_thread_state () - { - if (!m_released) - finish_thread_state (m_ptid); - } - - /* Disengage. */ - void release () - { - m_released = true; - } - - DISABLE_COPY_AND_ASSIGN (scoped_finish_thread_state); - -private: - bool m_released = false; - ptid_t m_ptid; -}; +using scoped_finish_thread_state + = FORWARD_SCOPE_EXIT (finish_thread_state); /* Commands with a prefix of `thread'. */ extern struct cmd_list_element *thread_cmd_list;