Files
pytorch/c10/util/error.cpp
Kiuk Chung 54f4621ca5 Add missing explicit include directive for <cerrno> in c10/util/error… (#141593)
`c10/util/error.cpp` uses the symbol `errno` but is missing an explicit header include directive for `<cerrno>`.

cc) @malfet , @atalman
Pull Request resolved: https://github.com/pytorch/pytorch/pull/141593
Approved by: https://github.com/Skylion007
2024-11-27 00:00:23 +00:00

32 lines
695 B
C++

#include <cerrno>
#include <cstring>
#include <c10/util/error.h>
#include <string>
#include <type_traits>
namespace c10::utils {
// Get an error string in the thread-safe way.
std::string str_error(int errnum) {
auto old_errno = errno;
std::string buf(256, '\0');
#if defined(_WIN32)
auto res [[maybe_unused]] = strerror_s(buf.data(), buf.size(), errnum);
buf.resize(strlen(buf.c_str()));
#else
auto res [[maybe_unused]] = strerror_r(errnum, buf.data(), buf.size());
if constexpr (std::is_same_v<decltype(res), int>) {
buf.resize(strlen(buf.c_str()));
} else {
if (res) {
buf = res;
}
}
#endif
errno = old_errno;
return buf;
}
} // namespace c10::utils