From 2db497e89e8e4a37a8bd569b8691b9b87ae63606 Mon Sep 17 00:00:00 2001 From: Andrey Turkin Date: Tue, 23 Feb 2010 18:41:27 +0300 Subject: [PATCH] kernel32: Use TEB-based buffer in CreateMutexExA. --- dlls/kernel32/sync.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/dlls/kernel32/sync.c b/dlls/kernel32/sync.c index fbe055d8431..0ba2ad12465 100644 --- a/dlls/kernel32/sync.c +++ b/dlls/kernel32/sync.c @@ -614,16 +614,19 @@ HANDLE WINAPI CreateMutexW( SECURITY_ATTRIBUTES *sa, BOOL owner, LPCWSTR name ) */ HANDLE WINAPI CreateMutexExA( SECURITY_ATTRIBUTES *sa, LPCSTR name, DWORD flags, DWORD access ) { - WCHAR buffer[MAX_PATH]; + ANSI_STRING nameA; + NTSTATUS status; if (!name) return CreateMutexExW( sa, NULL, flags, access ); - if (!MultiByteToWideChar( CP_ACP, 0, name, -1, buffer, MAX_PATH )) + RtlInitAnsiString( &nameA, name ); + status = RtlAnsiStringToUnicodeString( &NtCurrentTeb()->StaticUnicodeString, &nameA, FALSE ); + if (status != STATUS_SUCCESS) { SetLastError( ERROR_FILENAME_EXCED_RANGE ); return 0; } - return CreateMutexExW( sa, buffer, flags, access ); + return CreateMutexExW( sa, NtCurrentTeb()->StaticUnicodeString.Buffer, flags, access ); }