Alexandre Julliard : start: Pass a valid filename argument to FormatMessage .
Alexandre Julliard
julliard at winehq.org
Mon Mar 29 09:57:58 CDT 2010
Module: wine
Branch: master
Commit: 0f01be47ee915228627d9cfd1a055b55919b527c
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0f01be47ee915228627d9cfd1a055b55919b527c
Author: Alexandre Julliard <julliard at 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 );
More information about the wine-cvs
mailing list