The decision to not rethrow a __forced_unwind exception is deliberate,
so add a comment explaining it.
libstdc++-v3/ChangeLog:
* libsupc++/new_opnt.cc (new): Add comment about forced unwind
exceptions.
#include <bits/exception_defines.h>
#include "new"
-using std::new_handler;
-using std::bad_alloc;
-
extern "C" void *malloc (std::size_t);
_GLIBCXX_WEAK_DEFINITION void *
}
__catch (...)
{
+ // N.B. catch (...) means the process will terminate if operator new(sz)
+ // exits with a __forced_unwind exception. The process will print
+ // "FATAL: exception not rethrown" to stderr before exiting.
+ //
+ // If we propagated that exception the process would still terminate
+ // (because this function is noexcept) but with a less informative error:
+ // "terminate called without active exception".
return nullptr;
}
}