diff options
author | Chris Liechti <cliechti@gmx.net> | 2016-05-31 23:43:19 +0200 |
---|---|---|
committer | Chris Liechti <cliechti@gmx.net> | 2016-05-31 23:43:19 +0200 |
commit | 91f63fdd8bb9ad3cfd6348aa8d3fa9eed2a1c60e (patch) | |
tree | 7092875df0d54d15d6b636ec6f7e32a12c2ff40e | |
parent | fc264b85c87a6b7872f6e249ad1018567d85df8f (diff) | |
download | pyserial-git-91f63fdd8bb9ad3cfd6348aa8d3fa9eed2a1c60e.tar.gz |
win32: handle errors of GetOverlappedResult in read(), fixes #121
-rw-r--r-- | serial/serialwin32.py | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/serial/serialwin32.py b/serial/serialwin32.py index 037f282..2a8cebb 100644 --- a/serial/serialwin32.py +++ b/serial/serialwin32.py @@ -283,11 +283,14 @@ class Serial(SerialBase): ctypes.byref(self._overlapped_read)) if not read_ok and win32.GetLastError() not in (win32.ERROR_SUCCESS, win32.ERROR_IO_PENDING): raise SerialException("ReadFile failed ({!r})".format(ctypes.WinError())) - win32.GetOverlappedResult( + result_ok = win32.GetOverlappedResult( self._port_handle, ctypes.byref(self._overlapped_read), ctypes.byref(rc), True) + if not result_ok: + if win32.GetLastError() != win32.ERROR_OPERATION_ABORTED: + raise SerialException('call to GetOverlappedResult failed') read = buf.raw[:rc.value] else: read = bytes() |