mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-12 03:32:10 +00:00
Windows/PathV2.inc: Retry rename() for (maximum) 2 seconds.
Files might be opend by system scanners (eg. file indexer, virus scanner, &c). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156380 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a337010989
commit
6781c96599
@ -301,11 +301,21 @@ error_code rename(const Twine &from, const Twine &to) {
|
|||||||
if (error_code ec = UTF8ToUTF16(f, wide_from)) return ec;
|
if (error_code ec = UTF8ToUTF16(f, wide_from)) return ec;
|
||||||
if (error_code ec = UTF8ToUTF16(t, wide_to)) return ec;
|
if (error_code ec = UTF8ToUTF16(t, wide_to)) return ec;
|
||||||
|
|
||||||
if (!::MoveFileExW(wide_from.begin(), wide_to.begin(),
|
error_code ec = error_code::success();
|
||||||
MOVEFILE_COPY_ALLOWED | MOVEFILE_REPLACE_EXISTING))
|
for (int i = 0; i < 2000; i++) {
|
||||||
return windows_error(::GetLastError());
|
if (::MoveFileExW(wide_from.begin(), wide_to.begin(),
|
||||||
|
MOVEFILE_COPY_ALLOWED | MOVEFILE_REPLACE_EXISTING))
|
||||||
|
return error_code::success();
|
||||||
|
ec = windows_error(::GetLastError());
|
||||||
|
if (ec != windows_error::access_denied)
|
||||||
|
break;
|
||||||
|
// Retry MoveFile() at ACCESS_DENIED.
|
||||||
|
// System scanners (eg. indexer) might open the source file when
|
||||||
|
// It is written and closed.
|
||||||
|
::Sleep(1);
|
||||||
|
}
|
||||||
|
|
||||||
return error_code::success();
|
return ec;
|
||||||
}
|
}
|
||||||
|
|
||||||
error_code resize_file(const Twine &path, uint64_t size) {
|
error_code resize_file(const Twine &path, uint64_t size) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user