aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libstdc++-v3/ChangeLog5
-rw-r--r--libstdc++-v3/src/filesystem/ops.cc6
2 files changed, 10 insertions, 1 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 8287f71..7d02cf4 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,8 @@
+2016-10-26 Jonathan Wakely <jwakely@redhat.com>
+
+ PR libstdc++/78111
+ * src/filesystem/ops.cc (canonical): Set error for non-existent path.
+
2016-10-26 Uros Bizjak <ubizjak@gmail.com>
* acinclude.m4 (GLIBCXX_CHECK_FILESYSTEM_DEPS): Include <limits.h>
diff --git a/libstdc++-v3/src/filesystem/ops.cc b/libstdc++-v3/src/filesystem/ops.cc
index 32c9c5e..9abcee0 100644
--- a/libstdc++-v3/src/filesystem/ops.cc
+++ b/libstdc++-v3/src/filesystem/ops.cc
@@ -142,7 +142,11 @@ fs::canonical(const path& p, const path& base, error_code& ec)
#endif
if (!exists(pa, ec))
- return result;
+ {
+ if (!ec)
+ ec = make_error_code(std::errc::no_such_file_or_directory);
+ return result;
+ }
// else: we know there are (currently) no unresolvable symlink loops
result = pa.root_path();