[PATCH] ntdll/tests: Fix failures in the file tests (GetOverlappedResult)

Nikolay Sivov nsivov at codeweavers.com
Mon Apr 1 11:15:52 CDT 2019


On 3/31/19 6:34 PM, Detlef Riekenberg wrote:

> Setting LastError to ERROR_SUCCESS in GetOverlappedResult seems to be broken.
>
> Example test failure:
> http://test.winehq.org/data/c6ff0e01224e86c7baa31d019fcb0a7bf03e2f96/win10_dr-i7-HD3000-wowv3/ntdll:file.html
>
> Patch tested:
> https://testbot.winehq.org/JobDetails.pl?Key=50279
>
> --
> bye bye ...
>          ... Detlef
>
> Signed-off-by: Detlef Riekenberg <wine.dev at web.de>
> ---
>   dlls/ntdll/tests/file.c | 6 ++++--
>   1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/dlls/ntdll/tests/file.c b/dlls/ntdll/tests/file.c
> index d107c2ed2b..0aa3c041af 100644
> --- a/dlls/ntdll/tests/file.c
> +++ b/dlls/ntdll/tests/file.c
> @@ -4464,7 +4464,8 @@ static void test_read_write(void)
>           SetLastError(0xdeadbeef);
>           ret = GetOverlappedResult(hfile, &ovl, &bytes, TRUE);
>           ok(ret, "GetOverlappedResult should report TRUE\n");
> -        ok(GetLastError() == 0xdeadbeef, "expected 0xdeadbeef, got %d\n", GetLastError());
> +        ok((GetLastError() == 0xdeadbeef) || broken(GetLastError() == ERROR_SUCCESS),
> +            "expected 0xdeadbeef, got %d\n", GetLastError());
>           ok(bytes == 0, "expected 0, read %u\n", bytes);
>           ok((NTSTATUS)ovl.Internal == STATUS_SUCCESS, "expected STATUS_SUCCESS, got %#lx\n", ovl.Internal);
>           ok(ovl.InternalHigh == 0, "expected 0, got %lu\n", ovl.InternalHigh);
> @@ -4493,7 +4494,8 @@ static void test_read_write(void)
>           SetLastError(0xdeadbeef);
>           ret = GetOverlappedResult(hfile, &ovl, &bytes, TRUE);
>           ok(ret, "GetOverlappedResult should report TRUE\n");
> -        ok(GetLastError() == 0xdeadbeef, "expected 0xdeadbeef, got %d\n", GetLastError());
> +        ok((GetLastError() == 0xdeadbeef) || broken(GetLastError() == ERROR_SUCCESS),
> +            "expected 0xdeadbeef, got %d\n", GetLastError());
>           ok(bytes == 0, "expected 0, read %u\n", bytes);
>           ok((NTSTATUS)ovl.Internal == STATUS_SUCCESS, "expected STATUS_SUCCESS, got %#lx\n", ovl.Internal);
>           ok(ovl.InternalHigh == 0, "expected 0, got %lu\n", ovl.InternalHigh);
> --
> 2.21.0.windows.1
Maybe we should remove those error tests altogether, it's successful 
cases anyway.



More information about the wine-devel mailing list