From 41154114f64c1531764236e9268d2a5ac52e3e91 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Wed, 1 Sep 2010 14:17:34 +0000 Subject: Add an interface for unregistering a file from the FilesToRemove list. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112705 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/System/Win32/Signals.inc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'lib/System/Win32/Signals.inc') diff --git a/lib/System/Win32/Signals.inc b/lib/System/Win32/Signals.inc index d6db71ba4f..2498a26ea9 100644 --- a/lib/System/Win32/Signals.inc +++ b/lib/System/Win32/Signals.inc @@ -140,6 +140,20 @@ bool sys::RemoveFileOnSignal(const sys::Path &Filename, std::string* ErrMsg) { return false; } +// DontRemoveFileOnSignal - The public API +void sys::DontRemoveFileOnSignal(const sys::Path &Filename) { + if (FilesToRemove == NULL) + return; + + FilesToRemove->push_back(Filename); + std::vector::reverse_iterator I = + std::find(FilesToRemove->rbegin(), FilesToRemove->rend(), Filename); + if (I != FilesToRemove->rend()) + FilesToRemove->erase(I.base()-1); + + LeaveCriticalSection(&CriticalSection); +} + /// PrintStackTraceOnErrorSignal - When an error signal (such as SIBABRT or /// SIGSEGV) is delivered to the process, print a stack trace and then exit. void sys::PrintStackTraceOnErrorSignal() { -- cgit v1.2.3