This was fixed last year by r15-2409-g017e3f89b081e4 (and backports), so
just add the testcase.

libstdc++-v3/ChangeLog:

        PR libstdc++/118699
        * testsuite/27_io/filesystem/operations/copy.cc: Check copying a
        file to a directory.
---

Tested x86_64-linux and x86_64-mingw-w64.

Pushed to trunk.

 .../27_io/filesystem/operations/copy.cc        | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc 
b/libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc
index c302d9ad2a0..289bef6160b 100644
--- a/libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc
+++ b/libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc
@@ -228,6 +228,23 @@ test_pr99290()
   remove_all(dir);
 }
 
+void
+test_pr118699()
+{
+  auto dir = __gnu_test::nonexistent_path();
+  fs::create_directories(dir/"a");
+  fs::create_directories(dir/"c");
+  std::ofstream{dir/"a/b.txt"} << "b";
+  std::ofstream{dir/"a/bb.txt"} << "bb";
+
+  fs::copy(dir/"a/b.txt", dir/"c");
+  auto ec = make_error_code(std::errc::invalid_argument);
+  fs::copy(dir/"a/bb.txt", dir/"c", ec);
+  VERIFY( !ec );
+
+  remove_all(dir);
+}
+
 int
 main()
 {
@@ -237,4 +254,5 @@ main()
   test04();
   test05();
   test_pr99290();
+  test_pr118699();
 }
-- 
2.49.0

Reply via email to