(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 09:10:31 CDT 2009


Am Friday 21 August 2009 14:22:14 schrieb Alexandre Julliard:
> Stefan Leichter <Stefan.Leichter at camline.com> writes:
> > 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.
>
> What you need to test is things like "test file.exe two.exe" where both
> exe files exist. I don't see why you can't pass arguments too, you just
> have to make the child a bit smarter to ignore args like "two.exe".

When i pass arguments the code path you objects all the time is not executed. 
Ignoring unknow args is not possible in the shell32 tests. This must be done 
in include/wine/test.h. I don't like to test what breaks, when i do 
modifications there.
--
Stefan



More information about the wine-devel mailing list