mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-03 06:10:23 +00:00
[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
This commit is contained in:
parent
7dbb1e179e
commit
cefb333582
7
clang/test/Frontend/remove-file-on-signal.c
Normal file
7
clang/test/Frontend/remove-file-on-signal.c
Normal file
@ -0,0 +1,7 @@
|
||||
// RUN: rm -rf %t && mkdir -p %t && cd %t
|
||||
// RUN: not --crash %clang_cc1 %s -emit-llvm -o foo.ll
|
||||
// RUN: ls . | FileCheck %s --allow-empty
|
||||
// CHECK-NOT: foo.ll
|
||||
|
||||
#pragma clang __debug crash
|
||||
FOO
|
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user