Index: src/libchcore/TLocalFilesystem.cpp =================================================================== diff -u -rd468098a278a0d16c5b700236ea276b9c9677c9f -rcde3645c5041aedd6703b81b6fed42134c615917 --- src/libchcore/TLocalFilesystem.cpp (.../TLocalFilesystem.cpp) (revision d468098a278a0d16c5b700236ea276b9c9677c9f) +++ src/libchcore/TLocalFilesystem.cpp (.../TLocalFilesystem.cpp) (revision cde3645c5041aedd6703b81b6fed42134c615917) @@ -214,7 +214,7 @@ void TLocalFilesystem::FastMove(const TSmartPath& pathSource, const TSmartPath& pathDestination) { - if (!::MoveFile(PrependPathExtensionIfNeeded(pathSource).ToString(), PrependPathExtensionIfNeeded(pathDestination).ToString())) + if (!::MoveFileEx(PrependPathExtensionIfNeeded(pathSource).ToString(), PrependPathExtensionIfNeeded(pathDestination).ToString(), 0)) { DWORD dwLastError = GetLastError(); // there is also the destination path that is important; tracking that would require adding a new exception class Index: src/libchcore/TSubTaskFastMove.cpp =================================================================== diff -u -rd468098a278a0d16c5b700236ea276b9c9677c9f -rcde3645c5041aedd6703b81b6fed42134c615917 --- src/libchcore/TSubTaskFastMove.cpp (.../TSubTaskFastMove.cpp) (revision d468098a278a0d16c5b700236ea276b9c9677c9f) +++ src/libchcore/TSubTaskFastMove.cpp (.../TSubTaskFastMove.cpp) (revision cde3645c5041aedd6703b81b6fed42134c615917) @@ -181,7 +181,7 @@ } // check if this is one of the errors, that will just cause fast move to skip - if (dwLastError == ERROR_ACCESS_DENIED || dwLastError == ERROR_ALREADY_EXISTS) + if (dwLastError == ERROR_ACCESS_DENIED || dwLastError == ERROR_ALREADY_EXISTS || dwLastError == ERROR_NOT_SAME_DEVICE) { bSkip = true; break;