Author: jroelofs Date: Tue Aug 19 08:56:56 2014 New Revision: 215977 URL: http://llvm.org/viewvc/llvm-project?rev=215977&view=rev Log: Give libcxx tests temporary filenames that are actually unique.
This fixes a race condition on temp file name creation. http://reviews.llvm.org/D4962 Modified: libcxx/trunk/test/support/platform_support.h Modified: libcxx/trunk/test/support/platform_support.h URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/support/platform_support.h?rev=215977&r1=215976&r2=215977&view=diff ============================================================================== --- libcxx/trunk/test/support/platform_support.h (original) +++ libcxx/trunk/test/support/platform_support.h Tue Aug 19 08:56:56 2014 @@ -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 _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
