(resend, 2nd) shell32: fix program search in ShellExecuteEx, quote program name if it contains spaces [2nd]

Alexandre Julliard julliard at winehq.org
Wed Aug 19 05:05:04 CDT 2009


Stefan Leichter <Stefan.Leichter at camline.com> writes:

> @@ -1711,28 +1713,29 @@
>  	}
>  	else
>  	{
> -	    /* If the executable name is not quoted, we have to use this search loop here,
> +        /* FIXME: what versions support this? Fails on 2000/XP
> +           If the executable name is not quoted, we have to use this search loop here,
>  	       that in CreateProcess() is not sufficient because it does not handle shell links. */
>  	    WCHAR buffer[MAX_PATH], xlpFile[MAX_PATH];
> -	    LPWSTR space, s;
> +        LPWSTR space;
>  
> -	    LPWSTR beg = wszApplicationName/*sei_tmp.lpFile*/;
> -	    for(s=beg; (space=strchrW(s, ' ')); s=space+1) {
> -		int idx = space-sei_tmp.lpFile;
> -		memcpy(buffer, sei_tmp.lpFile, idx * sizeof(WCHAR));
> +        lstrcpynW(buffer, wszApplicationName, sizeof(buffer)/sizeof(WCHAR));
> +        while((space=strchrW(buffer, ' ')))
> +        {
> +            int idx = space-buffer;
>  		buffer[idx] = '\0';

This will break the loop since you don't reset the buffer contents. Also
the indentation is messed up, please fix your editor setup.

-- 
Alexandre Julliard
julliard at winehq.org



More information about the wine-devel mailing list