From 597fb9ff6dd8ab4500141186f0ebebd2aaea92f0 Mon Sep 17 00:00:00 2001 From: Sepalani Date: Mon, 22 Aug 2022 12:39:02 +0400 Subject: Move SocketManager's DecodeError to Common Fix thread safety issue --- Source/Core/Common/Network.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'Source/Core/Common/Network.cpp') diff --git a/Source/Core/Common/Network.cpp b/Source/Core/Common/Network.cpp index 2d532690c1..a112fb9a99 100644 --- a/Source/Core/Common/Network.cpp +++ b/Source/Core/Common/Network.cpp @@ -9,6 +9,7 @@ #ifndef _WIN32 #include +#include #include #include #else @@ -545,4 +546,24 @@ void RestoreNetworkErrorState(const NetworkErrorState& state) WSASetLastError(state.wsa_error); #endif } + +const char* DecodeNetworkError(s32 error_code) +{ + thread_local char buffer[1024]; +#define IS_BSD_STRERROR \ + defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(ANDROID) || \ + defined(__APPLE__) +#ifdef _WIN32 + FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS | + FORMAT_MESSAGE_MAX_WIDTH_MASK, + nullptr, error_code, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buffer, + sizeof(buffer), nullptr); + return buffer; +#elif (IS_BSD_STRERROR) || ((_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) && !_GNU_SOURCE) + strerror_r(error_code, buffer, sizeof(buffer)); + return buffer; +#else + return strerror_r(error_code, buffer, sizeof(buffer)); +#endif +} } // namespace Common -- cgit v1.2.3