kernel32: Get the current directory from the process parameters in create_cmd_process().

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2018-10-16 21:50:58 +02:00
parent ec0c5a11fd
commit c4d85843c0
1 changed files with 4 additions and 3 deletions

View File

@ -2469,7 +2469,7 @@ static BOOL create_vdm_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES
* *
* Create a new cmd shell process for a .BAT file. * Create a new cmd shell process for a .BAT file.
*/ */
static BOOL create_cmd_process( LPCWSTR cur_dir, LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa, static BOOL create_cmd_process( LPSECURITY_ATTRIBUTES psa, LPSECURITY_ATTRIBUTES tsa,
BOOL inherit, DWORD flags, LPSTARTUPINFOW startup, BOOL inherit, DWORD flags, LPSTARTUPINFOW startup,
const RTL_USER_PROCESS_PARAMETERS *params, const RTL_USER_PROCESS_PARAMETERS *params,
LPPROCESS_INFORMATION info ) LPPROCESS_INFORMATION info )
@ -2480,7 +2480,7 @@ static BOOL create_cmd_process( LPCWSTR cur_dir, LPSECURITY_ATTRIBUTES psa, LPSE
static const WCHAR slashscW[] = {' ','/','s','/','c',' ',0}; static const WCHAR slashscW[] = {' ','/','s','/','c',' ',0};
static const WCHAR quotW[] = {'"',0}; static const WCHAR quotW[] = {'"',0};
WCHAR comspec[MAX_PATH]; WCHAR comspec[MAX_PATH];
WCHAR *newcmdline; WCHAR *newcmdline, *cur_dir = NULL;
BOOL ret; BOOL ret;
if (!GetEnvironmentVariableW( comspecW, comspec, ARRAY_SIZE( comspec ))) if (!GetEnvironmentVariableW( comspecW, comspec, ARRAY_SIZE( comspec )))
@ -2498,6 +2498,7 @@ static BOOL create_cmd_process( LPCWSTR cur_dir, LPSECURITY_ATTRIBUTES psa, LPSE
strcatW( newcmdline, quotW ); strcatW( newcmdline, quotW );
strcatW( newcmdline, params->CommandLine.Buffer ); strcatW( newcmdline, params->CommandLine.Buffer );
strcatW( newcmdline, quotW ); strcatW( newcmdline, quotW );
if (params->CurrentDirectory.DosPath.Length) cur_dir = params->CurrentDirectory.DosPath.Buffer;
ret = CreateProcessW( comspec, newcmdline, psa, tsa, inherit, ret = CreateProcessW( comspec, newcmdline, psa, tsa, inherit,
flags | CREATE_UNICODE_ENVIRONMENT, params->Environment, cur_dir, flags | CREATE_UNICODE_ENVIRONMENT, params->Environment, cur_dir,
startup, info ); startup, info );
@ -2705,7 +2706,7 @@ static BOOL create_process_impl( LPCWSTR app_name, LPWSTR cmd_line, LPSECURITY_A
if (!strcmpiW( p, batW ) || !strcmpiW( p, cmdW ) ) if (!strcmpiW( p, batW ) || !strcmpiW( p, cmdW ) )
{ {
TRACE( "starting %s as batch binary\n", debugstr_w(name) ); TRACE( "starting %s as batch binary\n", debugstr_w(name) );
retv = create_cmd_process( cur_dir, process_attr, thread_attr, retv = create_cmd_process( process_attr, thread_attr,
inherit, flags, startup_info, params, info ); inherit, flags, startup_info, params, info );
break; break;
} }