Hans Leidekker <h...@codeweavers.com> writes:

> @@ -772,10 +772,22 @@ static HANDLE execute_command( const WCHAR *exe, WCHAR 
> *arg, const WCHAR *dir )
>  {
>      STARTUPINFOW si;
>      PROCESS_INFORMATION info;
> +    int len;
> +    WCHAR *cmd;
>      BOOL ret;
>  
> +    len = strlenW( exe );
> +    if (arg) len += strlenW( arg ) + 1;
> +    if (!(cmd = msi_alloc( (len + 1) * sizeof(WCHAR) ))) return 
> INVALID_HANDLE_VALUE;
> +    strcpyW( cmd, exe );
> +    if (arg)
> +    {
> +        strcatW( cmd, szSpace );
> +        strcatW( cmd, arg );
> +    }
>      memset( &si, 0, sizeof(STARTUPINFOW) );
> -    ret = CreateProcessW( exe, arg, NULL, NULL, FALSE, 0, NULL, dir, &si, 
> &info );
> +    ret = CreateProcessW( NULL, cmd, NULL, NULL, FALSE, 0, NULL, dir, &si, 
> &info );

You should still pass the exe name to CreateProcess in addition to the
command line. You probably also want to quote it in the command line if
it contains spaces. Also some callers pass a NULL exe.

-- 
Alexandre Julliard
julli...@winehq.org


Reply via email to