diff options
Diffstat (limited to 'lib/Support/Windows/Path.inc')
| -rw-r--r-- | lib/Support/Windows/Path.inc | 16 | 
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/Support/Windows/Path.inc b/lib/Support/Windows/Path.inc index 625f67aa912a8..42a92f9c6dfee 100644 --- a/lib/Support/Windows/Path.inc +++ b/lib/Support/Windows/Path.inc @@ -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) @@ -908,12 +918,12 @@ Path::createTemporaryFileOnDisk(bool reuse_current, std::string* ErrMsg) {  }  /// MapInFilePages - Not yet implemented on win32. -const char *Path::MapInFilePages(int FD, uint64_t FileSize) { +const char *Path::MapInFilePages(int FD, size_t FileSize, off_t Offset) {    return 0;  }  /// MapInFilePages - Not yet implemented on win32. -void Path::UnMapFilePages(const char *Base, uint64_t FileSize) { +void Path::UnMapFilePages(const char *Base, size_t FileSize) {    assert(0 && "NOT IMPLEMENTED");  }  | 
