ntdll: Make asynchronous WaitCommEvent report correct number of bytes returned.

This commit is contained in:
Dmitry Timoshkov 2013-09-26 11:51:40 +09:00 committed by Alexandre Julliard
parent 38871d842f
commit a20b07c558
2 changed files with 10 additions and 3 deletions

View File

@ -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");

View File

@ -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;