[PATCH v2 2/3] kernelbase: Set the proper error code in GetQueuedCompletionStatus{Ex} when the handle is closed.
Alexey Prokhin
alexey at prokhin.ru
Wed Apr 29 10:10:17 CDT 2020
Planet Zoo relies on it being ERROR_ABANDONED_WAIT_0.
Signed-off-by: Alexey Prokhin <alexey at prokhin.ru>
---
v2: ERROR_WAIT_NO_CHILDREN -> STATUS_ABANDONED_WAIT_0. Supersedes 184511
---
dlls/kernelbase/sync.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/dlls/kernelbase/sync.c b/dlls/kernelbase/sync.c
index c0db4679e9..ca8bb691cc 100644
--- a/dlls/kernelbase/sync.c
+++ b/dlls/kernelbase/sync.c
@@ -959,6 +959,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH GetQueuedCompletionStatus( HANDLE port, LPDWORD co
}
if (status == STATUS_TIMEOUT) SetLastError( WAIT_TIMEOUT );
+ else if (status == STATUS_ABANDONED_WAIT_0) SetLastError( ERROR_ABANDONED_WAIT_0 );
else SetLastError( RtlNtStatusToDosError(status) );
return FALSE;
}
@@ -980,6 +981,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH GetQueuedCompletionStatusEx( HANDLE port, OVERLAPP
if (ret == STATUS_SUCCESS) return TRUE;
else if (ret == STATUS_TIMEOUT) SetLastError( WAIT_TIMEOUT );
else if (ret == STATUS_USER_APC) SetLastError( WAIT_IO_COMPLETION );
+ else if (ret == STATUS_ABANDONED_WAIT_0) SetLastError( ERROR_ABANDONED_WAIT_0 );
else SetLastError( RtlNtStatusToDosError(ret) );
return FALSE;
}
--
2.26.2
More information about the wine-devel
mailing list