From: Daniel Dunbar Date: Mon, 25 Apr 2011 20:43:05 +0000 (+0000) Subject: Driver: When compilation fails, don't try to remove output files we don't have X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8ac127a09ab36f84860c176fe6b199c4973be984;p=clang 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 --- 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