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)