diff options
Diffstat (limited to 'testing/asio/fix-strerror_r.patch')
-rw-r--r-- | testing/asio/fix-strerror_r.patch | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/testing/asio/fix-strerror_r.patch b/testing/asio/fix-strerror_r.patch new file mode 100644 index 0000000000..f05a519c81 --- /dev/null +++ b/testing/asio/fix-strerror_r.patch @@ -0,0 +1,42 @@ +From 52d862c4e8af60a31f0067e1070b8625e805cdc3 Mon Sep 17 00:00:00 2001 +From: Natanael Copa <ncopa@alpinelinux.org> +Date: Thu, 21 Jan 2016 23:37:32 +0100 +Subject: [PATCH] Fix use of strerror_r() + +Don't try keep track of all platforms which follows posix standard. +Instead, make the platform which don't follow standard to an exception +and fall back to standard implementation for everything else. + +This fixes building with musl libc. + +Fixes #94 +--- + asio/include/asio/impl/error_code.ipp | 11 ++++------- + 1 file changed, 4 insertions(+), 7 deletions(-) + +diff --git a/asio/include/asio/impl/error_code.ipp b/asio/include/asio/impl/error_code.ipp +index b996773..3a1cff1 100644 +--- a/include/asio/impl/error_code.ipp ++++ b/include/asio/impl/error_code.ipp +@@ -98,17 +98,14 @@ public: + #if defined(__sun) || defined(__QNX__) || defined(__SYMBIAN32__) + using namespace std; + return strerror(value); +-#elif defined(__MACH__) && defined(__APPLE__) \ +- || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) \ +- || defined(_AIX) || defined(__hpux) || defined(__osf__) \ +- || defined(__ANDROID__) ++#elif defined(__GLIBC__) && defined(_GNU_SOURCE) ++ char buf[256] = ""; ++ return strerror_r(value, buf, sizeof(buf)); ++#else + char buf[256] = ""; + using namespace std; + strerror_r(value, buf, sizeof(buf)); + return buf; +-#else +- char buf[256] = ""; +- return strerror_r(value, buf, sizeof(buf)); + #endif + #endif // defined(ASIO_WINDOWS_DESKTOP) || defined(__CYGWIN__) + } |