diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2021-02-10 16:45:38 +0000 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2021-02-10 16:45:38 +0000 |
commit | 313e2dc377d07d5fae5a3fd666ad7000d7e8771d (patch) | |
tree | 4ebee38d57a7e804ad73dc972482fa88afa1d545 | |
parent | 6a6f74be9d6891cb0c17c493b1f9bca20673e6a0 (diff) | |
download | gcc-313e2dc377d07d5fae5a3fd666ad7000d7e8771d.zip gcc-313e2dc377d07d5fae5a3fd666ad7000d7e8771d.tar.gz gcc-313e2dc377d07d5fae5a3fd666ad7000d7e8771d.tar.bz2 |
libstdc++: Use correct error category for Windows error codes
When the result of GetLastError() is stored in a std::error_code it
should use std::system_category(), not std::generic_category() that is
used for POSIX errno values.
libstdc++-v3/ChangeLog:
* src/c++17/fs_ops.cc (fs::create_hard_link, fs::equivalent)
(fs::remove): Use std::system_category() for error codes from
GetLastError().
* src/filesystem/ops.cc (fs::create_hard_link, fs::remove):
Likewise.
-rw-r--r-- | libstdc++-v3/src/c++17/fs_ops.cc | 8 | ||||
-rw-r--r-- | libstdc++-v3/src/filesystem/ops.cc | 4 |
2 files changed, 6 insertions, 6 deletions
diff --git a/libstdc++-v3/src/c++17/fs_ops.cc b/libstdc++-v3/src/c++17/fs_ops.cc index 04a559a..7deb4c3 100644 --- a/libstdc++-v3/src/c++17/fs_ops.cc +++ b/libstdc++-v3/src/c++17/fs_ops.cc @@ -690,7 +690,7 @@ fs::create_hard_link(const path& to, const path& new_hard_link, if (CreateHardLinkW(new_hard_link.c_str(), to.c_str(), NULL)) ec.clear(); else - ec.assign((int)GetLastError(), generic_category()); + ec.assign((int)GetLastError(), system_category()); #else ec = std::make_error_code(std::errc::not_supported); #endif @@ -882,12 +882,12 @@ fs::equivalent(const path& p1, const path& p2, error_code& ec) noexcept if (!h1 || !h2) { if (!h1 && !h2) - ec.assign((int)GetLastError(), generic_category()); + ec.assign((int)GetLastError(), system_category()); return false; } if (!h1.get_info() || !h2.get_info()) { - ec.assign((int)GetLastError(), generic_category()); + ec.assign((int)GetLastError(), system_category()); return false; } return h1.info.dwVolumeSerialNumber == h2.info.dwVolumeSerialNumber @@ -1263,7 +1263,7 @@ fs::remove(const path& p, error_code& ec) noexcept return true; } else if (!ec) - ec.assign((int)GetLastError(), generic_category()); + ec.assign((int)GetLastError(), system_category()); } else if (status_known(st)) ec.clear(); diff --git a/libstdc++-v3/src/filesystem/ops.cc b/libstdc++-v3/src/filesystem/ops.cc index 779d73f..c400376 100644 --- a/libstdc++-v3/src/filesystem/ops.cc +++ b/libstdc++-v3/src/filesystem/ops.cc @@ -590,7 +590,7 @@ fs::create_hard_link(const path& to, const path& new_hard_link, if (CreateHardLinkW(new_hard_link.c_str(), to.c_str(), NULL)) ec.clear(); else - ec.assign((int)GetLastError(), generic_category()); + ec.assign((int)GetLastError(), system_category()); #else ec = std::make_error_code(std::errc::not_supported); #endif @@ -1062,7 +1062,7 @@ fs::remove(const path& p, error_code& ec) noexcept return true; } else if (!ec) - ec.assign((int)GetLastError(), generic_category()); + ec.assign((int)GetLastError(), system_category()); } else if (status_known(st)) ec.clear(); |