diff options
author | Ken Matsui <kmatsui@gcc.gnu.org> | 2024-01-10 22:08:07 -0800 |
---|---|---|
committer | Ken Matsui <kmatsui@gcc.gnu.org> | 2024-01-11 03:36:14 -0800 |
commit | df147e2ee7199d33d66959c6509ce9c21072077f (patch) | |
tree | bd959a135eeb37aa09fdc478e0a28bd89c5fffcd /libstdc++-v3/src/filesystem/ops.cc | |
parent | ea2a9c76a1dcffbbec6e53655bef9236d3a8e691 (diff) | |
download | gcc-df147e2ee7199d33d66959c6509ce9c21072077f.zip gcc-df147e2ee7199d33d66959c6509ce9c21072077f.tar.gz gcc-df147e2ee7199d33d66959c6509ce9c21072077f.tar.bz2 |
libstdc++: Fix error handling in filesystem::equivalent [PR113250]
This patch made std::filesystem::equivalent correctly throw an exception
when either path does not exist as per [fs.op.equivalent]/4.
PR libstdc++/113250
libstdc++-v3/ChangeLog:
* src/c++17/fs_ops.cc (fs::equivalent): Use || instead of &&.
* src/filesystem/ops.cc (fs::equivalent): Likewise.
* testsuite/27_io/filesystem/operations/equivalent.cc: Handle
error codes.
* testsuite/experimental/filesystem/operations/equivalent.cc:
Likewise.
Signed-off-by: Ken Matsui <kmatsui@gcc.gnu.org>
Reviewed-by: Jonathan Wakely <jwakely@redhat.com>
Diffstat (limited to 'libstdc++-v3/src/filesystem/ops.cc')
-rw-r--r-- | libstdc++-v3/src/filesystem/ops.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libstdc++-v3/src/filesystem/ops.cc b/libstdc++-v3/src/filesystem/ops.cc index eccdae3..4d23a80 100644 --- a/libstdc++-v3/src/filesystem/ops.cc +++ b/libstdc++-v3/src/filesystem/ops.cc @@ -765,7 +765,7 @@ fs::equivalent(const path& p1, const path& p2, error_code& ec) noexcept return false; return st1.st_dev == st2.st_dev && st1.st_ino == st2.st_ino; } - else if (!exists(s1) && !exists(s2)) + else if (!exists(s1) || !exists(s2)) ec = std::make_error_code(std::errc::no_such_file_or_directory); else if (err) ec.assign(err, std::generic_category()); |