diff --git a/src/plotter_disk.hpp b/src/plotter_disk.hpp index b848021eb..0e9bd4e0f 100644 --- a/src/plotter_disk.hpp +++ b/src/plotter_disk.hpp @@ -23,6 +23,7 @@ #include #include +#include #include #include @@ -370,7 +371,13 @@ class DiskPlotter { Timer copy; do { std::error_code ec; - if (tmp_2_filename.parent_path() == final_filename.parent_path()) { + struct stat tmp2_stat, final_stat; + int rc; + rc = ::stat(reinterpret_cast(tmp_2_filename.c_str()), &tmp2_stat); + if (rc == 0) + rc = ::stat(reinterpret_cast(final_filename.parent_path().c_str()), &final_stat); + if ((rc == 0 && tmp2_stat.st_dev == final_stat.st_dev) || + tmp_2_filename.parent_path() == final_filename.parent_path()) { fs::rename(tmp_2_filename, final_filename, ec); if (ec.value() != 0) { std::cout << "Could not rename " << tmp_2_filename << " to " << final_filename