summaryrefslogtreecommitdiffstats
path: root/src/common/misc.cpp
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2020-10-30 04:30:42 +0100
committerLioncash <mathew1800@gmail.com>2020-10-30 05:13:21 +0100
commit26547d3e3be403047445fd39e671d7ef3b88dabb (patch)
tree2189a7d0f6eb01a30a16ce2137bb952a0a854fea /src/common/misc.cpp
parentMerge pull request #4831 from lioncash/fmt (diff)
downloadyuzu-26547d3e3be403047445fd39e671d7ef3b88dabb.tar
yuzu-26547d3e3be403047445fd39e671d7ef3b88dabb.tar.gz
yuzu-26547d3e3be403047445fd39e671d7ef3b88dabb.tar.bz2
yuzu-26547d3e3be403047445fd39e671d7ef3b88dabb.tar.lz
yuzu-26547d3e3be403047445fd39e671d7ef3b88dabb.tar.xz
yuzu-26547d3e3be403047445fd39e671d7ef3b88dabb.tar.zst
yuzu-26547d3e3be403047445fd39e671d7ef3b88dabb.zip
Diffstat (limited to 'src/common/misc.cpp')
-rw-r--r--src/common/misc.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/common/misc.cpp b/src/common/misc.cpp
index 68cb86cd1..1d5393597 100644
--- a/src/common/misc.cpp
+++ b/src/common/misc.cpp
@@ -16,16 +16,23 @@
// Call directly after the command or use the error num.
// This function might change the error code.
std::string GetLastErrorMsg() {
- static const std::size_t buff_size = 255;
+ static constexpr std::size_t buff_size = 255;
char err_str[buff_size];
#ifdef _WIN32
FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, nullptr, GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), err_str, buff_size, nullptr);
+ return std::string(err_str, buff_size);
+#elif defined(__GLIBC__) && (_GNU_SOURCE || (_POSIX_C_SOURCE < 200112L && _XOPEN_SOURCE < 600))
+ // Thread safe (GNU-specific)
+ const char* str = strerror_r(errno, err_str, buff_size);
+ return std::string(str);
#else
// Thread safe (XSI-compliant)
- strerror_r(errno, err_str, buff_size);
+ const int success = strerror_r(errno, err_str, buff_size);
+ if (success != 0) {
+ return {};
+ }
+ return std::string(err_str);
#endif
-
- return std::string(err_str, buff_size);
}