diff options
author | Daniel Dunbar <daniel@zuster.org> | 2011-04-25 20:43:05 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2011-04-25 20:43:05 +0000 |
commit | 8ac127a09ab36f84860c176fe6b199c4973be984 (patch) | |
tree | 35348f3d6eccc4d3f10c0323346ebba791e4f637 /lib/Driver/Compilation.cpp | |
parent | 85e59d79e3033510d615625d1da421ac4fe7f38f (diff) |
Driver: When compilation fails, don't try to remove output files we don't have
write access to.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130150 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Driver/Compilation.cpp')
-rw-r--r-- | lib/Driver/Compilation.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/Driver/Compilation.cpp b/lib/Driver/Compilation.cpp index 5619212d38..2657faa0d3 100644 --- a/lib/Driver/Compilation.cpp +++ b/lib/Driver/Compilation.cpp @@ -101,6 +101,12 @@ bool Compilation::CleanupFileList(const ArgStringList &Files, llvm::sys::Path P(*it); std::string Error; + // Don't try to remove files which we don't have write access to (but may be + // able to remove). Underlying tools may have intentionally not overwritten + // them. + if (!P.canWrite()) + continue; + if (P.eraseFromDisk(false, &Error)) { // Failure is only failure if the file exists and is "regular". There is // a race condition here due to the limited interface of |