diff --git a/toml/exception.hpp b/toml/exception.hpp index 927d791..1367948 100644 --- a/toml/exception.hpp +++ b/toml/exception.hpp @@ -37,13 +37,7 @@ inline std::string str_error(int errnum) { return std::string(buf.data()); } -#elif defined(_GNU_SOURCE) - constexpr std::size_t bufsize = 256; - std::array buf; - buf.fill('\0'); - const char* result = strerror_r(errnum, buf.data(), bufsize); - return std::string(result); -#elif (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112L) || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE >= 600) +#elif (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112L) || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE >= 600) || ( defined(__DARWIN_C_LEVEL) && __DARWIN_C_LEVEL >= 200112L ) // macos or POSIX constexpr std::size_t bufsize = 256; std::array buf; buf.fill('\0'); @@ -56,6 +50,12 @@ inline std::string str_error(int errnum) { return std::string(buf.data()); } +#elif defined(_GNU_SOURCE) + constexpr std::size_t bufsize = 256; + std::array buf; + buf.fill('\0'); + const char* result = strerror_r(errnum, buf.data(), bufsize); + return std::string(result); #else // fallback return std::strerror(errnum); #endif