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