Module: wine Branch: master Commit: 9f7bc109d20a07367875fcd6044dbaad41d9eb7e URL: http://source.winehq.org/git/wine.git/?a=commit;h=9f7bc109d20a07367875fcd604...
Author: Alexandre Julliard julliard@winehq.org Date: Thu Jun 24 11:01:56 2010 +0200
kernel32: Avoid returning the same name when GetTempFileName is called twice in a short interval.
---
dlls/kernel32/path.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/dlls/kernel32/path.c b/dlls/kernel32/path.c index f0da96c..0e69f91 100644 --- a/dlls/kernel32/path.c +++ b/dlls/kernel32/path.c @@ -684,7 +684,10 @@ UINT WINAPI GetTempFileNameW( LPCWSTR path, LPCWSTR prefix, UINT unique, LPWSTR /* get a "random" unique number and try to create the file */ HANDLE handle; UINT num = GetTickCount() & 0xffff; + static UINT last;
+ /* avoid using the same name twice in a short interval */ + if (last - num < 10) num = last + 1; if (!num) num = 1; unique = num; do @@ -696,6 +699,7 @@ UINT WINAPI GetTempFileNameW( LPCWSTR path, LPCWSTR prefix, UINT unique, LPWSTR { /* We created it */ TRACE("created %s\n", debugstr_w(buffer) ); CloseHandle( handle ); + last = unique; break; } if (GetLastError() != ERROR_FILE_EXISTS &&