Issue 16169: ctypes.WinError() confuses errno with winerror (original) (raw)
ctypes.WinError() is defined as
def WinError(code=None, descr=None):
if code is None:
code = GetLastError()
if descr is None:
descr = FormatError(code).strip()
return WindowsError(code, descr)
Since WindowsError became an alias for OSError, this means that if e is the exception raised, e.errno == GetLastError() and e.winerror == None.
I think the last line should be
return WindowsError(None, descr, None, code)