Admin message

Due to a large amount of spam we do not allow new users to create repositories, they are "external" users. If you are a new user and want to create a repository, for example for forking GHC, open a new issue on ghc/ghc using the "get-verified" issue template

Missing error cases in GHC.Internal.IO.Windows.Handle
In GHC.Internal.IO.Windows.Handle I see: ``` hwndReadNonBlocking hwnd ptr offset bytes = do mngr <- Mgr.getSystemManager val <- withOverlappedEx mngr "hwndReadNonBlocking" (toHANDLE hwnd) (isAsynchronous hwnd) offset (startCB ptr) completionCB return $ ioValue val ``` where `ioValue` is a record selector: ``` data IOResult a = IOSuccess { ioValue :: a } | IOFailed { ioErrCode :: Maybe Int } ``` So what happens if `val` is `IOFailed`? Just a runtime crash. The same thing happens in `hwndWriteNonBlocking`. Another runtime crash. This seems outright wrong. So far as I can see `IOFailed` is a real possibility. As part of !13308 I am expunging incomplete record selectors, which is what brought this up. I have adjusted the code so that, while it still crashes, it gives a more localised error message, and includes the error code. But it needs fixing properly by someone who understands what is going on.
issue