From 8ba825e2ea09ec16e9cab3525ed3d7c6145123a5 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Tue, 25 Jun 2013 00:49:40 +0000 Subject: [PATCH] Cleanup in unique_file when we only want the name. This is really ugly, but it is no worse than what we have in clang right now and it is better to get it working first and clean/optimize it afterwards. Will be tested from clang in the next patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184802 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Support/PathV2.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/Support/PathV2.cpp b/lib/Support/PathV2.cpp index 0e02953c549..cc654eea58b 100644 --- a/lib/Support/PathV2.cpp +++ b/lib/Support/PathV2.cpp @@ -627,10 +627,18 @@ namespace fs { error_code unique_file(const Twine &Model, SmallVectorImpl &ResultPath, bool MakeAbsolute, unsigned Mode) { + // FIXME: This is really inefficient. unique_path creates a path an tries to + // open it. We should factor the code so that we just don't create/open the + // file when we don't need it. int FD; error_code Ret = unique_file(Model, FD, ResultPath, MakeAbsolute, Mode); - close(FD); - return Ret; + if (Ret) + return Ret; + + if (close(FD)) + return error_code(errno, system_category()); + + return fs::remove(ResultPath.begin()); } error_code make_absolute(SmallVectorImpl &path) {