[PATCH 2/3] kernelbase: Set the proper error code in GetQueuedCompletionStatus{Ex} when the handle is closed.

Dmitry Timoshkov dmitry at baikal.ru
Wed Apr 29 04:49:34 CDT 2020


Alexey Prokhin <alexey at prokhin.ru> wrote:

>      if (status == STATUS_TIMEOUT) SetLastError( WAIT_TIMEOUT );
> +    else if (status == ERROR_WAIT_NO_CHILDREN) 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 == ERROR_WAIT_NO_CHILDREN) SetLastError( ERROR_ABANDONED_WAIT_0 );
>      else SetLastError( RtlNtStatusToDosError(ret) );
>      return FALSE;
>  }

Probably 'ret' should be checked for appropriate STATUS_xxx code, accidently
ERROR_WAIT_NO_CHILDREN is equal STATUS_ABANDONED_WAIT_0.

-- 
Dmitry.



More information about the wine-devel mailing list