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

Stefan Leichter Stefan.Leichter at camline.com
Fri Aug 21 06:48:20 CDT 2009


Am Friday 21 August 2009 11:37:56 schrieb Alexandre Julliard:
> Stefan Leichter <Stefan.Leichter at camline.com> writes:
> > @@ -1711,32 +1713,35 @@
> >  	}
> >  	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)); +            space = buffer +
> > strlenW(buffer);
> > +            do
>
> Searching from the end doesn't look right. This would need a test case.

This tests needs an additional program/binary, that does not need command line 
parameters (therefore shell32_test.exe can not be used), to be build in the 
test directory.

A possible way might be to create a recource from the second program, and 
extract this during runtime, for winetest.

The source for this is attached. It misses the modifications to Makefile.in 
and to fix the build dependencies, what i did not manage.

i give up here.

Stefan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ShellExecuteEx_tests.diff
Type: text/x-diff
Size: 9634 bytes
Desc: not available
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20090821/c53f107d/attachment.diff>


More information about the wine-devel mailing list