Windows/Path.inc: [PR6270] PathV1::makeUnique(): Give arbitrary initial seed for workaround.

FIXME: We should use sys::fs::unique_file() in future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127723 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
NAKAMURA Takumi 2011-03-16 02:53:24 +00:00
parent 124d0332db
commit bfb25cd97c

View File

@ -882,7 +882,17 @@ Path::makeUnique(bool reuse_current, std::string* ErrMsg) {
// Find a numeric suffix that isn't used by an existing file. Assume there
// won't be more than 1 million files with the same prefix. Probably a safe
// bet.
static unsigned FCounter = 0;
static int FCounter = -1;
if (FCounter < 0) {
// Give arbitrary initial seed.
// FIXME: We should use sys::fs::unique_file() in future.
LARGE_INTEGER cnt64;
DWORD x = GetCurrentProcessId();
x = (x << 16) | (x >> 16);
if (QueryPerformanceCounter(&cnt64)) // RDTSC
x ^= cnt64.HighPart ^ cnt64.LowPart;
FCounter = x % 1000000;
}
do {
sprintf(FNBuffer+offset, "-%06u", FCounter);
if (++FCounter > 999999)