Module: wine Branch: master Commit: d7ef680e950431d868e6d52418513472af7edbb3 URL: https://source.winehq.org/git/wine.git/?a=commit;h=d7ef680e950431d868e6d5241...
Author: Alexandre Julliard julliard@winehq.org Date: Mon Jul 13 18:45:04 2020 +0200
ntdll: Use a pthread mutex for the drive info section.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ntdll/unix/file.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/dlls/ntdll/unix/file.c b/dlls/ntdll/unix/file.c index c5ffd0166d..c90fac156a 100644 --- a/dlls/ntdll/unix/file.c +++ b/dlls/ntdll/unix/file.c @@ -1871,13 +1871,14 @@ static NTSTATUS server_get_file_info( HANDLE handle, IO_STATUS_BLOCK *io, void * /* retrieve device/inode number for all the drives */ static unsigned int get_drives_info( struct file_identity info[MAX_DOS_DRIVES] ) { + static pthread_mutex_t cache_mutex = PTHREAD_MUTEX_INITIALIZER; static struct file_identity cache[MAX_DOS_DRIVES]; static time_t last_update; static unsigned int nb_drives; unsigned int ret; time_t now = time(NULL);
- RtlEnterCriticalSection( &dir_section ); + pthread_mutex_lock( &cache_mutex ); if (now != last_update) { char *buffer, *p; @@ -1912,7 +1913,7 @@ static unsigned int get_drives_info( struct file_identity info[MAX_DOS_DRIVES] ) } memcpy( info, cache, sizeof(cache) ); ret = nb_drives; - RtlLeaveCriticalSection( &dir_section ); + pthread_mutex_unlock( &cache_mutex ); return ret; }