mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-26 11:47:31 +00:00
Import libcxxrt master 6f2fdfebcd6291d763de8b17740d636f01761890
Interesting fixes: 3cbfe5a Avoid noreturn warning on terminate()
This commit is contained in:
parent
5a07cb0492
commit
f177240452
26
exception.cc
26
exception.cc
@ -237,7 +237,7 @@ static_assert(offsetof(__cxa_dependent_exception, unwindHeader) ==
|
||||
|
||||
namespace std
|
||||
{
|
||||
void unexpected();
|
||||
[[noreturn]] void unexpected();
|
||||
class exception
|
||||
{
|
||||
public:
|
||||
@ -1530,28 +1530,34 @@ namespace std
|
||||
if (0 != info && 0 != info->terminateHandler)
|
||||
{
|
||||
info->terminateHandler();
|
||||
// Should not be reached - a terminate handler is not expected to
|
||||
// return.
|
||||
abort();
|
||||
}
|
||||
terminateHandler.load()();
|
||||
else
|
||||
{
|
||||
terminateHandler.load()();
|
||||
}
|
||||
// Should not be reached - a terminate handler is not expected
|
||||
// to return.
|
||||
abort();
|
||||
}
|
||||
/**
|
||||
* Called when an unexpected exception is encountered (i.e. an exception
|
||||
* violates an exception specification). This calls abort() unless a
|
||||
* custom handler has been set..
|
||||
*/
|
||||
void unexpected()
|
||||
[[noreturn]] void unexpected()
|
||||
{
|
||||
static __cxa_thread_info *info = thread_info();
|
||||
if (0 != info && 0 != info->unexpectedHandler)
|
||||
{
|
||||
info->unexpectedHandler();
|
||||
// Should not be reached - a terminate handler is not expected to
|
||||
// return.
|
||||
abort();
|
||||
}
|
||||
unexpectedHandler.load()();
|
||||
else
|
||||
{
|
||||
unexpectedHandler.load()();
|
||||
}
|
||||
// Should not be reached - a unexpected handler is not expected
|
||||
// to return.
|
||||
abort();
|
||||
}
|
||||
/**
|
||||
* Returns whether there are any exceptions currently being thrown that
|
||||
|
Loading…
Reference in New Issue
Block a user