diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2017-01-04 22:11:41 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2017-01-04 22:11:41 +0000 |
| commit | cb08bb04c85c6dcd3d951725505317c31eeff323 (patch) | |
| tree | affc3d589de957aeb81a9ba2d0849e2bddde7861 /src/system_error.cpp | |
| parent | 53a420fba21cf1644972b34dcd811a43cdb8368d (diff) | |
Notes
Diffstat (limited to 'src/system_error.cpp')
| -rw-r--r-- | src/system_error.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/system_error.cpp b/src/system_error.cpp index 3a2255425f092..c547124768282 100644 --- a/src/system_error.cpp +++ b/src/system_error.cpp @@ -29,9 +29,11 @@ _LIBCPP_BEGIN_NAMESPACE_STD // class error_category +#if defined(_LIBCPP_DEPRECATED_ABI_EXTERNAL_ERROR_CATEGORY_CONSTRUCTOR) error_category::error_category() _NOEXCEPT { } +#endif error_category::~error_category() _NOEXCEPT { @@ -63,8 +65,16 @@ constexpr size_t strerror_buff_size = 1024; string do_strerror_r(int ev); -#if defined(__linux__) && !defined(_LIBCPP_HAS_MUSL_LIBC) \ - && (!defined(__ANDROID__) || __ANDROID_API__ >= 23) +#if defined(_LIBCPP_MSVCRT) +string do_strerror_r(int ev) { + char buffer[strerror_buff_size]; + if (::strerror_s(buffer, strerror_buff_size, ev) == 0) + return string(buffer); + std::snprintf(buffer, strerror_buff_size, "unknown error %d", ev); + return string(buffer); +} +#elif defined(__linux__) && !defined(_LIBCPP_HAS_MUSL_LIBC) && \ + (!defined(__ANDROID__) || __ANDROID_API__ >= 23) // GNU Extended version string do_strerror_r(int ev) { char buffer[strerror_buff_size]; |
