Alexandre Julliard : kernel32: Avoid returning the same name when GetTempFileName is called twice in a short interval .
Module: wine Branch: master Commit: 9f7bc109d20a07367875fcd6044dbaad41d9eb7e URL: http://source.winehq.org/git/wine.git/?a=commit;h=9f7bc109d20a07367875fcd604... Author: Alexandre Julliard <julliard(a)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 &&
participants (1)
-
Alexandre Julliard