Module: wine Branch: master Commit: 0f01be47ee915228627d9cfd1a055b55919b527c URL: http://source.winehq.org/git/wine.git/?a=commit;h=0f01be47ee915228627d9cfd1a...
Author: Alexandre Julliard julliard@winehq.org Date: Mon Mar 29 12:26:55 2010 +0200
start: Pass a valid filename argument to FormatMessage.
---
programs/start/start.c | 15 +++++++++------ 1 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/programs/start/start.c b/programs/start/start.c index 0c26cbc..81c1d27 100644 --- a/programs/start/start.c +++ b/programs/start/start.c @@ -70,8 +70,9 @@ static void output(const WCHAR *message) then terminate. */
-static void fatal_error(const WCHAR *msg, DWORD error_code) +static void fatal_error(const WCHAR *msg, DWORD error_code, const WCHAR *filename) { + DWORD_PTR args[1]; LPVOID lpMsgBuf; int status; static const WCHAR colonsW[] = { ':', ' ', 0 }; @@ -79,7 +80,9 @@ static void fatal_error(const WCHAR *msg, DWORD error_code)
output(msg); output(colonsW); - status = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, error_code, 0, (LPWSTR) & lpMsgBuf, 0, NULL); + args[0] = (DWORD_PTR)filename; + status = FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ARGUMENT_ARRAY, + NULL, error_code, 0, (LPWSTR)&lpMsgBuf, 0, (__ms_va_list *)args ); if (!status) { WINE_ERR("FormatMessage failed\n"); @@ -92,7 +95,7 @@ static void fatal_error(const WCHAR *msg, DWORD error_code) ExitProcess(1); }
-static void fatal_string_error(int which, DWORD error_code) +static void fatal_string_error(int which, DWORD error_code, const WCHAR *filename) { WCHAR msg[2048];
@@ -100,7 +103,7 @@ static void fatal_string_error(int which, DWORD error_code) msg, sizeof(msg)/sizeof(WCHAR))) WINE_ERR("LoadString failed, error %d\n", GetLastError());
- fatal_error(msg, error_code); + fatal_error(msg, error_code, filename); } static void fatal_string(int which) @@ -332,7 +335,7 @@ int wmain (int argc, WCHAR *argv[]) &startup_info, /* lpStartupInfo */ &process_information /* lpProcessInformation */ )) { - fatal_string_error(STRING_EXECFAIL, GetLastError()); + fatal_string_error(STRING_EXECFAIL, GetLastError(), sei.lpFile); } sei.hProcess = process_information.hProcess; goto done; @@ -340,7 +343,7 @@ int wmain (int argc, WCHAR *argv[]) }
if (!ShellExecuteExW(&sei)) - fatal_string_error(STRING_EXECFAIL, GetLastError()); + fatal_string_error(STRING_EXECFAIL, GetLastError(), sei.lpFile);
done: HeapFree( GetProcessHeap(), 0, args );