From 2b99e1c17d73ebdbf422d529046266f0e2bb5fb9 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Tue, 8 Jun 2010 11:53:58 +0200 Subject: [PATCH] kernel32: Make sure we always have a valid process title. --- dlls/kernel32/environ.c | 6 ++---- dlls/kernel32/process.c | 6 ++++-- dlls/kernel32/tests/process.c | 24 ++++++++++++------------ 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/dlls/kernel32/environ.c b/dlls/kernel32/environ.c index b11f7bf7cbe..39c14700710 100644 --- a/dlls/kernel32/environ.c +++ b/dlls/kernel32/environ.c @@ -468,11 +468,9 @@ void ENV_CopyStartupInformation(void) startup_infoA.cb = sizeof(startup_infoA); startup_infoA.lpReserved = NULL; - startup_infoA.lpDesktop = (rupp->Desktop.Length && - RtlUnicodeStringToAnsiString( &ansi, &rupp->Desktop, TRUE) == STATUS_SUCCESS) ? + startup_infoA.lpDesktop = RtlUnicodeStringToAnsiString( &ansi, &rupp->Desktop, TRUE ) == STATUS_SUCCESS ? ansi.Buffer : NULL; - startup_infoA.lpTitle = (rupp->WindowTitle.Length && - RtlUnicodeStringToAnsiString( &ansi, &rupp->WindowTitle, TRUE) == STATUS_SUCCESS) ? + startup_infoA.lpTitle = RtlUnicodeStringToAnsiString( &ansi, &rupp->WindowTitle, TRUE ) == STATUS_SUCCESS ? ansi.Buffer : NULL; startup_infoA.dwX = rupp->dwX; startup_infoA.dwY = rupp->dwY; diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c index da99ab952b7..cc2a6ba6a0a 100644 --- a/dlls/kernel32/process.c +++ b/dlls/kernel32/process.c @@ -1481,6 +1481,7 @@ static startup_info_t *create_startup_info( LPCWSTR filename, LPCWSTR cmdline, const STARTUPINFOW *startup, DWORD *info_size ) { const RTL_USER_PROCESS_PARAMETERS *cur_params; + const WCHAR *title; startup_info_t *info; DWORD size; void *ptr; @@ -1510,13 +1511,14 @@ static startup_info_t *create_startup_info( LPCWSTR filename, LPCWSTR cmdline, else cur_dir = cur_params->CurrentDirectory.DosPath.Buffer; } + title = startup->lpTitle ? startup->lpTitle : imagepath; size = sizeof(*info); size += strlenW( cur_dir ) * sizeof(WCHAR); size += cur_params->DllPath.Length; size += strlenW( imagepath ) * sizeof(WCHAR); size += strlenW( cmdline ) * sizeof(WCHAR); - if (startup->lpTitle) size += strlenW( startup->lpTitle ) * sizeof(WCHAR); + size += strlenW( title ) * sizeof(WCHAR); if (startup->lpDesktop) size += strlenW( startup->lpDesktop ) * sizeof(WCHAR); /* FIXME: shellinfo */ if (startup->lpReserved2 && startup->cbReserved2) size += startup->cbReserved2; @@ -1575,7 +1577,7 @@ static startup_info_t *create_startup_info( LPCWSTR filename, LPCWSTR cmdline, ptr = (char *)ptr + cur_params->DllPath.Length; info->imagepath_len = append_string( &ptr, imagepath ); info->cmdline_len = append_string( &ptr, cmdline ); - if (startup->lpTitle) info->title_len = append_string( &ptr, startup->lpTitle ); + info->title_len = append_string( &ptr, title ); if (startup->lpDesktop) info->desktop_len = append_string( &ptr, startup->lpDesktop ); if (startup->lpReserved2 && startup->cbReserved2) { diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c index 77293c6934a..b4a048a14ac 100644 --- a/dlls/kernel32/tests/process.c +++ b/dlls/kernel32/tests/process.c @@ -661,7 +661,7 @@ static void test_Startup(void) WritePrivateProfileStringA(NULL, NULL, NULL, resfile); okChildInt("StartupInfoA", "cb", startup.cb); - todo_wine okChildString("StartupInfoA", "lpDesktop", startup.lpDesktop); + okChildString("StartupInfoA", "lpDesktop", startup.lpDesktop); okChildString("StartupInfoA", "lpTitle", startup.lpTitle); okChildInt("StartupInfoA", "dwX", startup.dwX); okChildInt("StartupInfoA", "dwY", startup.dwY); @@ -701,8 +701,8 @@ static void test_Startup(void) okChildInt("StartupInfoA", "cb", startup.cb); okChildString("StartupInfoA", "lpDesktop", startup.lpDesktop); result = getChildString( "StartupInfoA", "lpTitle" ); - todo_wine ok( broken(!result) || (result && !strCmp( result, selfname, 0 )), - "expected '%s' or null, got '%s'\n", selfname, result ); + ok( broken(!result) || (result && !strCmp( result, selfname, 0 )), + "expected '%s' or null, got '%s'\n", selfname, result ); okChildInt("StartupInfoA", "dwX", startup.dwX); okChildInt("StartupInfoA", "dwY", startup.dwY); okChildInt("StartupInfoA", "dwXSize", startup.dwXSize); @@ -740,7 +740,7 @@ static void test_Startup(void) okChildInt("StartupInfoA", "cb", startup.cb); okChildString("StartupInfoA", "lpDesktop", startup.lpDesktop); - todo_wine okChildString("StartupInfoA", "lpTitle", startup.lpTitle); + okChildString("StartupInfoA", "lpTitle", startup.lpTitle); okChildInt("StartupInfoA", "dwX", startup.dwX); okChildInt("StartupInfoA", "dwY", startup.dwY); okChildInt("StartupInfoA", "dwXSize", startup.dwXSize); @@ -777,8 +777,8 @@ static void test_Startup(void) WritePrivateProfileStringA(NULL, NULL, NULL, resfile); okChildInt("StartupInfoA", "cb", startup.cb); - todo_wine okChildString("StartupInfoA", "lpDesktop", startup.lpDesktop); - todo_wine okChildString("StartupInfoA", "lpTitle", startup.lpTitle); + okChildString("StartupInfoA", "lpDesktop", startup.lpDesktop); + okChildString("StartupInfoA", "lpTitle", startup.lpTitle); okChildInt("StartupInfoA", "dwX", startup.dwX); okChildInt("StartupInfoA", "dwY", startup.dwY); okChildInt("StartupInfoA", "dwXSize", startup.dwXSize); @@ -1214,8 +1214,8 @@ static void test_SuspendFlag(void) okChildInt("StartupInfoA", "cb", startup.cb); okChildString("StartupInfoA", "lpDesktop", us.lpDesktop); result = getChildString( "StartupInfoA", "lpTitle" ); - todo_wine ok( broken(!result) || (result && !strCmp( result, selfname, 0 )), - "expected '%s' or null, got '%s'\n", selfname, result ); + ok( broken(!result) || (result && !strCmp( result, selfname, 0 )), + "expected '%s' or null, got '%s'\n", selfname, result ); okChildInt("StartupInfoA", "dwX", startup.dwX); okChildInt("StartupInfoA", "dwY", startup.dwY); okChildInt("StartupInfoA", "dwXSize", startup.dwXSize); @@ -1276,8 +1276,8 @@ static void test_DebuggingFlag(void) okChildInt("StartupInfoA", "cb", startup.cb); okChildString("StartupInfoA", "lpDesktop", us.lpDesktop); result = getChildString( "StartupInfoA", "lpTitle" ); - todo_wine ok( broken(!result) || (result && !strCmp( result, selfname, 0 )), - "expected '%s' or null, got '%s'\n", selfname, result ); + ok( broken(!result) || (result && !strCmp( result, selfname, 0 )), + "expected '%s' or null, got '%s'\n", selfname, result ); okChildInt("StartupInfoA", "dwX", startup.dwX); okChildInt("StartupInfoA", "dwY", startup.dwY); okChildInt("StartupInfoA", "dwXSize", startup.dwXSize); @@ -1389,8 +1389,8 @@ static void test_Console(void) okChildInt("StartupInfoA", "cb", startup.cb); okChildString("StartupInfoA", "lpDesktop", us.lpDesktop); result = getChildString( "StartupInfoA", "lpTitle" ); - todo_wine ok( broken(!result) || (result && !strCmp( result, selfname, 0 )), - "expected '%s' or null, got '%s'\n", selfname, result ); + ok( broken(!result) || (result && !strCmp( result, selfname, 0 )), + "expected '%s' or null, got '%s'\n", selfname, result ); okChildInt("StartupInfoA", "dwX", startup.dwX); okChildInt("StartupInfoA", "dwY", startup.dwY); okChildInt("StartupInfoA", "dwXSize", startup.dwXSize); -- 2.11.4.GIT