mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-23 10:03:47 +08:00
[gdb] Make scope_exit constructor throw
While reviewing "catch (...)" uses I came across: ... scope_exit (EFP &&f) try : m_exit_function ((!std::is_lvalue_reference<EFP>::value && std::is_nothrow_constructible<EF, EFP>::value) ? std::move (f) : f) { } catch (...) { /* "If the initialization of exit_function throws an exception, calls f()." */ f (); } ... and while looking up the origin of the comment here [1] I saw right after: ... throws: Nothing, unless the initialization of exit_function throws ... I think that means that the exception should be rethrown, so fix this by doing so. Tested on aarch64-linux. Approved-By: Tom Tromey <tom@tromey.com> [1] https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0052r5.pdf
This commit is contained in:
parent
b3926d6ad1
commit
6078478a90
@ -109,6 +109,9 @@ public:
|
||||
/* "If the initialization of exit_function throws an exception,
|
||||
calls f()." */
|
||||
f ();
|
||||
/* "throws: Nothing, unless the initialization of exit_function
|
||||
throws." */
|
||||
throw;
|
||||
}
|
||||
|
||||
template<typename EFP,
|
||||
|
Loading…
Reference in New Issue
Block a user