diff options
Diffstat (limited to 'src/new.cpp')
| -rw-r--r-- | src/new.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/new.cpp b/src/new.cpp index 3d8b2a9d8a660..782aac90fb7ab 100644 --- a/src/new.cpp +++ b/src/new.cpp @@ -13,7 +13,8 @@ #include "new" -#if defined(__APPLE__) && !defined(LIBCXXRT) +#if defined(__APPLE__) && !defined(LIBCXXRT) && \ + !defined(_LIBCPP_BUILDING_HAS_NO_ABI_LIBRARY) #include <cxxabi.h> #ifndef _LIBCPPABI_VERSION @@ -26,7 +27,8 @@ #if defined(LIBCXXRT) || defined(LIBCXX_BUILDING_LIBCXXABI) #include <cxxabi.h> #endif // defined(LIBCXX_BUILDING_LIBCXXABI) - #if !defined(_LIBCPPABI_VERSION) && !defined(__GLIBCXX__) + #if defined(_LIBCPP_BUILDING_HAS_NO_ABI_LIBRARY) || \ + (!defined(_LIBCPPABI_VERSION) && !defined(__GLIBCXX__)) static std::new_handler __new_handler; #endif // _LIBCPPABI_VERSION #endif @@ -70,7 +72,7 @@ operator new(std::size_t size, std::align_val_t alignment) _THROW_BAD_ALLOC if (static_cast<size_t>(alignment) < sizeof(void*)) alignment = std::align_val_t(sizeof(void*)); void* p; -#if defined(_WIN32) +#if defined(_LIBCPP_MSVCRT) while ((p = _aligned_malloc(size, static_cast<size_t>(alignment))) == nullptr) #else while (::posix_memalign(&p, static_cast<size_t>(alignment), size) != 0) |
