diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2013-04-27 17:27:12 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2013-04-27 17:27:12 +0000 |
| commit | 527d9fcb66574fdd657c3235c0d7cba7c5439d5c (patch) | |
| tree | f4dbdda47a8f2e8eb8196e6a33ed834e8400837e /src/typeinfo.cpp | |
| parent | c7f918d0681828afdbddfdcc354b6f3dfc2a7b68 (diff) | |
Notes
Diffstat (limited to 'src/typeinfo.cpp')
| -rw-r--r-- | src/typeinfo.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/typeinfo.cpp b/src/typeinfo.cpp index 6bab0771f427..60828944a1bc 100644 --- a/src/typeinfo.cpp +++ b/src/typeinfo.cpp @@ -12,7 +12,7 @@ #define __has_include(inc) 0 #endif -#if __APPLE__ +#ifdef __APPLE__ #include <cxxabi.h> #elif defined(LIBCXXRT) || __has_include(<cxxabi.h>) #include <cxxabi.h> @@ -50,11 +50,21 @@ std::bad_typeid::what() const _NOEXCEPT return "std::bad_typeid"; } -#if __APPLE__ +#ifdef __APPLE__ // On Darwin, the cxa_bad_* functions cannot be in the lower level library // because bad_cast and bad_typeid are defined in his higher level library - void __cxxabiv1::__cxa_bad_typeid() { throw std::bad_typeid(); } - void __cxxabiv1::__cxa_bad_cast() { throw std::bad_cast(); } + void __cxxabiv1::__cxa_bad_typeid() + { +#ifndef _LIBCPP_NO_EXCEPTIONS + throw std::bad_typeid(); +#endif + } + void __cxxabiv1::__cxa_bad_cast() + { +#ifndef _LIBCPP_NO_EXCEPTIONS + throw std::bad_cast(); +#endif + } #endif #endif // _LIBCPPABI_VERSION |
