forked from OSchip/llvm-project
Give libcxx tests temporary filenames that are actually unique.
This fixes a race condition on temp file name creation. http://reviews.llvm.org/D4962 llvm-svn: 215977
This commit is contained in:
parent
802a353065
commit
1542a60c0b
|
@ -50,13 +50,23 @@ inline
|
|||
std::string
|
||||
get_temp_file_name()
|
||||
{
|
||||
std::string s("temp.XXXXXX");
|
||||
#if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
|
||||
_mktemp(&s[0]);
|
||||
char Path[MAX_PATH+1];
|
||||
char FN[MAX_PATH+1];
|
||||
do { } while (0 == GetTempPath(MAX_PATH+1, Path));
|
||||
do { } while (0 == GetTempFileName(Path, "libcxx", 0, FN));
|
||||
return FN;
|
||||
#else
|
||||
mktemp(&s[0]);
|
||||
std::string Name;
|
||||
int FD = -1;
|
||||
do {
|
||||
Name = "libcxx.XXXXXX";
|
||||
FD = mkstemp(&Name[0]);
|
||||
assert(errno != EINVAL && "Something is wrong with the mkstemp's argument");
|
||||
} while (FD == -1 || errno == EEXIST);
|
||||
close(FD);
|
||||
return Name;
|
||||
#endif
|
||||
return s;
|
||||
}
|
||||
|
||||
#endif // PLATFORM_SUPPORT_H
|
||||
|
|
Loading…
Reference in New Issue