diff -r 1f3b54f392b0 -r 7c33adc823e0 mercurial/win32.py --- a/mercurial/win32.py Wed Jul 12 15:27:56 2017 -0700 +++ b/mercurial/win32.py Thu Mar 30 00:33:00 2017 -0400 @@ -212,7 +212,12 @@ _kernel32.PeekNamedPipe.restype = _BOOL def _raiseoserror(name): - err = ctypes.WinError() + # Force the code to a signed int to avoid an 'int too large' error. + # See https://bugs.python.org/issue28474 + code = _kernel32.GetLastError() + if code > 0x7fffffff: + code -= 2**32 + err = ctypes.WinError(code=code) raise OSError(err.errno, '%s: %s' % (name, err.strerror)) def _getfileinfo(name):