summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2017-08-04 21:52:00 +0000
committerReid Kleckner <rnk@google.com>2017-08-04 21:52:00 +0000
commitcefb3335823f5d2d45898bd5dc635efb464523ea (patch)
tree24a540892bbb6ea5afe381fd46c69ea99f1becd6 /llvm/lib/Support
parent7dbb1e179edbb8d7544aab877d100df1feba1c04 (diff)
downloadbcm5719-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.inc7
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();
OpenPOWER on IntegriCloud