OSDN Git Service

Cleanup in unique_file when we only want the name.
authorRafael Espindola <rafael.espindola@gmail.com>
Tue, 25 Jun 2013 00:49:40 +0000 (00:49 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Tue, 25 Jun 2013 00:49:40 +0000 (00:49 +0000)
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

index 0e02953..cc654ee 100644 (file)
@@ -627,10 +627,18 @@ namespace fs {
 
 error_code unique_file(const Twine &Model, SmallVectorImpl<char> &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<char> &path) {