[libcxx] [test] Simplify get_temp_file_name() for mingw
Use the same codepaths as for MSVC. Mingw-w64 does have the _mktemp_s function; on Vista and newer, msvcrt.dll does contain the function, which ends up called. (Same thing in the UCRT.) In older versions of msvcrt.dll (older than what libc++ supports), mingw-w64 provides a fallback implementation. This effectively reverts23323e25f8
(andd07e5c23b4
). That commit tried to fix unspecified MinGW build breakage. This reduces the risk of temp name collisions between processes (when running multiple tests in parallel); the path returned by GetTempFileName can easily collide with other similar paths. (_mktemp_s on the other hand tries to avoid such clashes by using the process id as part of the uniqueness seed.) This avoids stray random failures in fstreams tests in mingw configurations. Differential Revision: https://reviews.llvm.org/D98526
This commit is contained in:
parent
fe6dbe7e95
commit
c5a74c0890
|
@ -46,9 +46,7 @@
|
|||
#include <locale>
|
||||
#include <string>
|
||||
#if defined(_WIN32)
|
||||
# define WIN32_LEAN_AND_MEAN // Reduce overhead of including windows.h
|
||||
# include <io.h> // _mktemp_s
|
||||
# include <windows.h> // MAX_PATH, GetTempPath, GetTempFileName
|
||||
#else
|
||||
# include <unistd.h> // close
|
||||
#endif
|
||||
|
@ -63,13 +61,7 @@ extern "C" {
|
|||
inline
|
||||
std::string get_temp_file_name()
|
||||
{
|
||||
#if defined(__MINGW32__)
|
||||
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;
|
||||
#elif defined(_WIN32)
|
||||
#if defined(_WIN32)
|
||||
char Name[] = "libcxx.XXXXXX";
|
||||
if (_mktemp_s(Name, sizeof(Name)) != 0) abort();
|
||||
return Name;
|
||||
|
|
Loading…
Reference in a new issue