Fix up uses of new/terminate/unexpected handlers to use the new getters.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@120914 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Howard Hinnant 2010-12-04 19:54:11 +00:00
parent 55ddb21dd4
commit 1f970ad73a
2 changed files with 5 additions and 4 deletions

View File

@ -38,7 +38,7 @@ std::get_unexpected() throw()
void void
std::unexpected() std::unexpected()
{ {
(*__unexpected_handler)(); (*get_unexpected())();
// unexpected handler should not return // unexpected handler should not return
std::terminate(); std::terminate();
} }
@ -62,7 +62,7 @@ std::terminate()
try try
{ {
#endif // _LIBCPP_NO_EXCEPTIONS #endif // _LIBCPP_NO_EXCEPTIONS
(*__terminate_handler)(); (*get_terminate())();
// handler should not return // handler should not return
::abort (); ::abort ();
#ifndef _LIBCPP_NO_EXCEPTIONS #ifndef _LIBCPP_NO_EXCEPTIONS

View File

@ -36,8 +36,9 @@ operator new(std::size_t size) throw (std::bad_alloc)
{ {
// If malloc fails and there is a new_handler, // If malloc fails and there is a new_handler,
// call it to try free up memory. // call it to try free up memory.
if (__new_handler) std::new_handler nh = get_new_handler();
__new_handler(); if (nh)
nh();
else else
#ifndef _LIBCPP_NO_EXCEPTIONS #ifndef _LIBCPP_NO_EXCEPTIONS
throw std::bad_alloc(); throw std::bad_alloc();