mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-01 11:22:21 -06:00
cmSystemTools::RenameFile: Retry on Windows ERROR_SHARING_VIOLATION
Add ERROR_SHARING_VIOLATION to the set of errors (previously including only ERROR_ACCESS_DENIED) that cause a rename (MoveFile) on Windows to retry. The condition was observed when two renames to the same target file name were happening simultaneously.
This commit is contained in:
@@ -917,8 +917,10 @@ bool cmSystemTools::RenameFile(const char* oldname, const char* newname)
|
||||
cmsys::Encoding::ToWide(newname).c_str(),
|
||||
MOVEFILE_REPLACE_EXISTING) && --retry.Count)
|
||||
{
|
||||
// Try again only if failure was due to access permissions.
|
||||
if(GetLastError() != ERROR_ACCESS_DENIED)
|
||||
DWORD last_error = GetLastError();
|
||||
// Try again only if failure was due to access/sharing permissions.
|
||||
if(last_error != ERROR_ACCESS_DENIED &&
|
||||
last_error != ERROR_SHARING_VIOLATION)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user