diff --git a/dlls/kernel32/tests/comm.c b/dlls/kernel32/tests/comm.c index 4e7fee52886..7ec5fc5a6a4 100644 --- a/dlls/kernel32/tests/comm.c +++ b/dlls/kernel32/tests/comm.c @@ -863,7 +863,6 @@ todo_wine { res = GetOverlappedResult(hcom, &ovl_wait, &bytes, FALSE); ok(res, "GetOverlappedResult reported error %d\n", GetLastError()); -todo_wine ok(bytes == sizeof(evtmask), "expected %u, written %u\n", (UINT)sizeof(evtmask), bytes); res = TRUE; } @@ -2135,7 +2134,6 @@ todo_wine last_event_time = after; ret = GetOverlappedResult(hcom, &ovl_wait, &bytes, FALSE); ok(ret, "GetOverlappedResult reported error %d\n", GetLastError()); -todo_wine ok(bytes == sizeof(evtmask), "expected sizeof(evtmask), got %u\n", bytes); ok(evtmask & EV_RXCHAR, "EV_RXCHAR should be set\n"); diff --git a/dlls/ntdll/serial.c b/dlls/ntdll/serial.c index 5e6eaf40dac..db618f85891 100644 --- a/dlls/ntdll/serial.c +++ b/dlls/ntdll/serial.c @@ -947,7 +947,16 @@ static DWORD CALLBACK wait_for_event(LPVOID arg) } if (needs_close) close( fd ); } - if (commio->iosb) commio->iosb->u.Status = *commio->events ? STATUS_SUCCESS : STATUS_CANCELLED; + if (commio->iosb) + { + if (*commio->events) + { + commio->iosb->u.Status = STATUS_SUCCESS; + commio->iosb->Information = sizeof(DWORD); + } + else + commio->iosb->u.Status = STATUS_CANCELLED; + } if (commio->hEvent) NtSetEvent(commio->hEvent, NULL); RtlFreeHeap(GetProcessHeap(), 0, commio); return 0;