kernel32/toolhelp: PROCESSENTRY32::szExeFile is the full path in Win9x.

Saulius Krasuckas saulius2 at ar.fi.lt
Thu May 26 06:38:50 CDT 2011


* On Wed, 25 May 2011, Adam Martinson wrote:
> 
> Dragon NaturallySpeaking 7 expects this in Win98 mode.
> ---
>  dlls/kernel32/tests/toolhelp.c |   19 +++++++++++++++-
>  dlls/kernel32/toolhelp.c       |   48 +++++++++++++++++++++++++++++----------
>  2 files changed, 53 insertions(+), 14 deletions(-)

I am not sure you do it right (now that new testing strategy is taken):

* On Tue, 30 Nov 2010, Alexandre Julliard wrote:
>
> The value of running tests on Win9x these days is certainly 
> questionable. We don't try to emulate the Win9x behavior anyway, except 
> in a very few cases (which most likely don't have tests...) so it only 
> serves to document historical behavior that nobody cares about any 
> longer.

WRT doesn't test win9x any longer, so what's the point of putting such 
check in the test?

> --- a/dlls/kernel32/tests/toolhelp.c
> +++ b/dlls/kernel32/tests/toolhelp.c
  ...
> @@ -106,6 +108,10 @@ static void test_process(DWORD curr_pid, DWORD sub_pcs_pid)
>      unsigned            found = 0;
>      int                 num = 0;
>      int			childpos = -1;
> +    OSVERSIONINFO osver;
> +
> +    osver.dwOSVersionInfoSize = sizeof(osver);
> +    pGetVersionEx(&osver);
>  
>      hSnapshot = pCreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
>      ok(hSnapshot != NULL, "Cannot create snapshot\n");
> @@ -116,10 +122,15 @@ static void test_process(DWORD curr_pid, DWORD sub_pcs_pid)
>      {
>          do
>          {
> +            TCHAR* bslash = strchr(pe.szExeFile, '\\');
>              if (pe.th32ProcessID == curr_pid) found++;
>              if (pe.th32ProcessID == sub_pcs_pid) { childpos = num; found++; }
>              trace("PID=%x %s\n", pe.th32ProcessID, pe.szExeFile);
>              num++;
> +            if (osver.dwMajorVersion < 5)
> +                ok(bslash != NULL, "szExeFile is not a full path: %s\n", pe.szExeFile);
> +            else
> +                ok(bslash == NULL, "szExeFile is a full path: %s\n", pe.szExeFile);
>          } while (pProcess32Next( hSnapshot, &pe ));
>      }
>      ok(found == 2, "couldn't find self and/or sub-process in process list\n");

Now such check is pointless, IMHO.

Here goes question to Alexandre: 
what about (testing in) such cases?  


S.



More information about the wine-devel mailing list