From c6dd1f1599974c4c2cacb17c4cd5ff589cfb343b Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Sat, 8 Dec 2007 22:54:27 +0100 Subject: [PATCH] kernel32: GetConsoleInputExeNameW returns TRUE even when it fails. --- dlls/kernel32/console.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/dlls/kernel32/console.c b/dlls/kernel32/console.c index 1f246143665..65312d22c92 100644 --- a/dlls/kernel32/console.c +++ b/dlls/kernel32/console.c @@ -1013,14 +1013,15 @@ BOOL WINAPI GetConsoleInputExeNameW(DWORD buflen, LPWSTR buffer) */ BOOL WINAPI GetConsoleInputExeNameA(DWORD buflen, LPSTR buffer) { - WCHAR *bufferW; - BOOL ret; + TRACE("%u %p\n", buflen, buffer); - if (!(bufferW = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR) * buflen))) return FALSE; - if ((ret = GetConsoleInputExeNameW(buflen, bufferW))) - WideCharToMultiByte(CP_ACP, 0, bufferW, -1, buffer, buflen, NULL, NULL); - HeapFree(GetProcessHeap(), 0, bufferW); - return ret; + RtlEnterCriticalSection(&CONSOLE_CritSect); + if (WideCharToMultiByte(CP_ACP, 0, input_exe, -1, NULL, 0, NULL, NULL) <= buflen) + WideCharToMultiByte(CP_ACP, 0, input_exe, -1, buffer, buflen, NULL, NULL); + else SetLastError(ERROR_BUFFER_OVERFLOW); + RtlLeaveCriticalSection(&CONSOLE_CritSect); + + return TRUE; } /*********************************************************************** -- 2.11.4.GIT