diff --git a/compat/mingw.c b/compat/mingw.c index ee1af7c3cadd92..ab9b6fa406ca58 100644 --- a/compat/mingw.c +++ b/compat/mingw.c @@ -2739,6 +2739,13 @@ int mingw_rename(const char *pold, const char *pnew) gle = GetLastError(); } + if (gle == ERROR_ACCESS_DENIED && is_inside_windows_container()) { + /* Fall back to copy to destination & remove source */ + if (CopyFileW(wpold, wpnew, FALSE) && !mingw_unlink(pold)) + return 0; + gle = GetLastError(); + } + /* revert file attributes on failure */ if (attrs != INVALID_FILE_ATTRIBUTES) SetFileAttributesW(wpnew, attrs);