diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2016-05-10 12:22:32 +0000 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2016-05-10 12:22:32 +0000 |
commit | 01eff005b8e86ed21fcb7958cba0277e828747b5 (patch) | |
tree | 469f417b9f82882bb1ab87b339da51dd67397c26 | |
parent | d9ece77eef3d6e0e92447158304ff0285f8a2191 (diff) |
libstdc++/71037 Add base path to filesystem::canonical exceptions
PR libstdc++/71037
* src/filesystem/ops.cc (canonical(const path&, const path&)): Add
base path to exception.
* testsuite/experimental/filesystem/operations/canonical.cc: Test
paths contained in exception.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@236074 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | libstdc++-v3/ChangeLog | 6 | ||||
-rw-r--r-- | libstdc++-v3/src/filesystem/ops.cc | 5 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/experimental/filesystem/operations/canonical.cc | 20 |
3 files changed, 29 insertions, 2 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 208b8940f5c..cf7ce6f5cd1 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,11 @@ 2016-05-10 Jonathan Wakely <jwakely@redhat.com> + PR libstdc++/71037 + * src/filesystem/ops.cc (canonical(const path&, const path&)): Add + base path to exception. + * testsuite/experimental/filesystem/operations/canonical.cc: Test + paths contained in exception. + * testsuite/experimental/type_erased_allocator/2.cc: Remove unused using declaration. diff --git a/libstdc++-v3/src/filesystem/ops.cc b/libstdc++-v3/src/filesystem/ops.cc index aa26cafa103..e18c7510c41 100644 --- a/libstdc++-v3/src/filesystem/ops.cc +++ b/libstdc++-v3/src/filesystem/ops.cc @@ -220,8 +220,9 @@ fs::canonical(const path& p, const path& base) { error_code ec; path can = canonical(p, base, ec); - if (ec.value()) - _GLIBCXX_THROW_OR_ABORT(filesystem_error("cannot canonicalize", p, ec)); + if (ec) + _GLIBCXX_THROW_OR_ABORT(filesystem_error("cannot canonicalize", p, base, + ec)); return can; } diff --git a/libstdc++-v3/testsuite/experimental/filesystem/operations/canonical.cc b/libstdc++-v3/testsuite/experimental/filesystem/operations/canonical.cc index e13c4bfe0a5..5b4c573eebf 100644 --- a/libstdc++-v3/testsuite/experimental/filesystem/operations/canonical.cc +++ b/libstdc++-v3/testsuite/experimental/filesystem/operations/canonical.cc @@ -59,8 +59,28 @@ test01() VERIFY( !ec ); } +void +test02() +{ +#if __cpp_exceptions + bool test __attribute__((unused)) = false; + + fs::path p = "rel", base = __gnu_test::nonexistent_path(); + fs::path e1, e2; + try { + canonical(p, base); + } catch (const fs::filesystem_error& e) { + e1 = e.path1(); + e2 = e.path2(); + } + VERIFY( e1 == p ); + VERIFY( e2 == base ); +#endif +} + int main() { test01(); + test02(); } |