diff options
author | Reid Kleckner <rnk@google.com> | 2017-08-04 21:52:00 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2017-08-04 21:52:00 +0000 |
commit | cefb3335823f5d2d45898bd5dc635efb464523ea (patch) | |
tree | 24a540892bbb6ea5afe381fd46c69ea99f1becd6 /llvm/lib/Support | |
parent | 7dbb1e179edbb8d7544aab877d100df1feba1c04 (diff) | |
download | bcm5719-llvm-cefb3335823f5d2d45898bd5dc635efb464523ea.tar.gz bcm5719-llvm-cefb3335823f5d2d45898bd5dc635efb464523ea.zip |
[Support] Use FILE_SHARE_DELETE to fix RemoveFileOnSignal on Windows
Summary:
Tools like clang that use RemoveFileOnSignal on their output files
weren't actually able to clean up their outputs before this change. Now
the call to llvm::sys::fs::remove succeeds and the temporary file is
deleted. This is a stop-gap to fix clang before implementing the
solution outlined in PR34070.
Reviewers: davide
Subscribers: llvm-commits, hiraditya
Differential Revision: https://reviews.llvm.org/D36337
llvm-svn: 310137
Diffstat (limited to 'llvm/lib/Support')
-rw-r--r-- | llvm/lib/Support/Windows/Path.inc | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/llvm/lib/Support/Windows/Path.inc b/llvm/lib/Support/Windows/Path.inc index 60c03645a57..8dac0e4482b 100644 --- a/llvm/lib/Support/Windows/Path.inc +++ b/llvm/lib/Support/Windows/Path.inc @@ -925,9 +925,10 @@ std::error_code openFileForWrite(const Twine &Name, int &ResultFD, if (Flags & F_RW) Access |= GENERIC_READ; - HANDLE H = ::CreateFileW(PathUTF16.begin(), Access, - FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, - CreationDisposition, FILE_ATTRIBUTE_NORMAL, NULL); + HANDLE H = + ::CreateFileW(PathUTF16.begin(), Access, + FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, + NULL, CreationDisposition, FILE_ATTRIBUTE_NORMAL, NULL); if (H == INVALID_HANDLE_VALUE) { DWORD LastError = ::GetLastError(); |