diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2016-05-05 22:09:43 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2016-05-05 22:09:43 +0000 |
| commit | 68c772440bea6b8080326b60b8208dbfdfd491ee (patch) | |
| tree | 8dcdeb310eaa7c6deca0725cd51fae935755af69 /memory.cc | |
| parent | 17a515e2228cbf097267b0d4ceabd64c1ae7ddb4 (diff) | |
Import libcxxrt master 516a65c109eb0a01e5e95fbef455eb3215135cef.vendor/libcxxrt/2016-03-29-516a65c109eb0a01e5e95fbef455eb3215135cef
Interesting fixes:
760ae47 Add std::uncaught_exceptions().
e45e6db Fix off-by-ones in emergency exception buffer free
3adaa2e Fix _Unwind_Exception cleanup functions
286776c Check exception cleanup function ptr before calling
edda626 Correct exception specifications on new and delete operators
Notes
svn path=/vendor/libcxxrt/dist/; revision=299140
svn path=/vendor/libcxxrt/2016-03-29-516a65c109eb0a01e5e95fbef455eb3215135cef/; revision=299141; tag=vendor/libcxxrt/2016-03-29-516a65c109eb0a01e5e95fbef455eb3215135cef
Diffstat (limited to 'memory.cc')
| -rw-r--r-- | memory.cc | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/memory.cc b/memory.cc index c8d28fc87e5a..9fa9d2a7aec5 100644 --- a/memory.cc +++ b/memory.cc @@ -71,8 +71,17 @@ namespace std } +#if __cplusplus < 201103L +#define NOEXCEPT throw() +#define BADALLOC throw(std::bad_alloc) +#else +#define NOEXCEPT noexcept +#define BADALLOC +#endif + + __attribute__((weak)) -void* operator new(size_t size) +void* operator new(size_t size) BADALLOC { if (0 == size) { @@ -97,7 +106,7 @@ void* operator new(size_t size) } __attribute__((weak)) -void* operator new(size_t size, const std::nothrow_t &) throw() +void* operator new(size_t size, const std::nothrow_t &) NOEXCEPT { try { return :: operator new(size); @@ -110,27 +119,21 @@ void* operator new(size_t size, const std::nothrow_t &) throw() __attribute__((weak)) -void operator delete(void * ptr) -#if __cplusplus < 201000L -throw() -#endif +void operator delete(void * ptr) NOEXCEPT { free(ptr); } __attribute__((weak)) -void * operator new[](size_t size) -#if __cplusplus < 201000L -throw(std::bad_alloc) -#endif +void * operator new[](size_t size) BADALLOC { return ::operator new(size); } __attribute__((weak)) -void * operator new[](size_t size, const std::nothrow_t &) throw() +void * operator new[](size_t size, const std::nothrow_t &) NOEXCEPT { try { return ::operator new[](size); @@ -143,10 +146,7 @@ void * operator new[](size_t size, const std::nothrow_t &) throw() __attribute__((weak)) -void operator delete[](void * ptr) -#if __cplusplus < 201000L -throw() -#endif +void operator delete[](void * ptr) NOEXCEPT { ::operator delete(ptr); } |
