mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-20 21:14:14 +08:00
`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
32 lines
695 B
C++
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
|