diff --git a/compiler/src/dmd/link.d b/compiler/src/dmd/link.d index b3ad7cc3dabd..1429efd1d1b8 100644 --- a/compiler/src/dmd/link.d +++ b/compiler/src/dmd/link.d @@ -958,9 +958,13 @@ public int runPreprocessor(Loc loc, const(char)[] cpp, const(char)[] filename, c version (Windows) { // generate unique temporary file name for preprocessed output - const(char)* tmpname = tmpnam(null); - assert(tmpname); - const(char)[] ifilename = tmpname[0 .. strlen(tmpname) + 1]; + char[MAX_PATH] tempDir = void; + char[MAX_PATH] tempFile = void; + if (GetTempPathA(MAX_PATH, tempDir.ptr) == 0) + return STATUS_FAILED; + if (GetTempFileNameA(tempDir.ptr, "dmd", 0, tempFile.ptr) == 0) + return STATUS_FAILED; + const(char)[] ifilename = tempFile[0 .. strlen(tempFile.ptr) + 1]; ifilename = xarraydup(ifilename); const(char)[] output = ifilename;