Skip to content
Permalink
Browse files
Retry few times when MoveFileEx fails on Windows due to sharing viola…
…tion.

git-svn-id: https://svn.r-project.org/R/trunk@73308 00db46b3-68df-0310-9c12-caf00c1e9a41
  • Loading branch information
kalibera committed Sep 18, 2017
1 parent 5c7d7ec commit c3ed5600599ad380356aedf2f3f5ec3717a3471e
Showing 1 changed file with 16 additions and 3 deletions.
@@ -384,15 +384,28 @@ SEXP do_dllversion(SEXP call, SEXP op, SEXP args, SEXP rho)
}



int Rwin_rename(const char *from, const char *to)
{
return (MoveFileEx(from, to, MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED | MOVEFILE_WRITE_THROUGH) == 0);
for(int retries = 0; retries < 10; retries++) {
if (MoveFileEx(from, to, MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED | MOVEFILE_WRITE_THROUGH))
return 0;
if (GetLastError() != ERROR_SHARING_VIOLATION)
return 1;
Sleep(500);
}
return 1;
}

int Rwin_wrename(const wchar_t *from, const wchar_t *to)
{
return (MoveFileExW(from, to, MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED | MOVEFILE_WRITE_THROUGH) == 0);
for(int retries = 0; retries < 10; retries++) {
if (MoveFileExW(from, to, MOVEFILE_REPLACE_EXISTING | MOVEFILE_COPY_ALLOWED | MOVEFILE_WRITE_THROUGH))
return 0;
if (GetLastError() != ERROR_SHARING_VIOLATION)
return 1;
Sleep(500);
}
return 1;
}


0 comments on commit c3ed560

Please sign in to comment.