From: Daniel Dunbar Date: Wed, 23 Jan 2013 01:08:23 +0000 (+0000) Subject: [Driver] Don't remove non-regular files that were outputs. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6ea3a2a6fafde4732ca4dd0426141772a5904271;p=clang [Driver] Don't remove non-regular files that were outputs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173215 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Driver/Compilation.cpp b/lib/Driver/Compilation.cpp index f550a2746e..9c7100fb80 100644 --- a/lib/Driver/Compilation.cpp +++ b/lib/Driver/Compilation.cpp @@ -210,9 +210,9 @@ bool Compilation::CleanupFileList(const ArgStringList &Files, 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()) + // able to remove), or non-regular files. Underlying tools may have + // intentionally not overwritten them. + if (!P.canWrite() || !P.isRegularFile()) continue; if (P.eraseFromDisk(false, &Error)) { diff --git a/test/Driver/output-file-is-dir.c b/test/Driver/output-file-is-dir.c new file mode 100644 index 0000000000..50f4cf97e5 --- /dev/null +++ b/test/Driver/output-file-is-dir.c @@ -0,0 +1,6 @@ +// RUN: rm -rf %t.dir +// RUN: mkdir -p %t.dir/a.out +// RUN: cd %t.dir && not %clang %s +// RUN: test -d %t.dir/a.out + +int main() { return 0; }