diff options
author | Jonathan Slenders <jonathan@slenders.be> | 2016-11-07 20:57:33 +0100 |
---|---|---|
committer | Jonathan Slenders <jonathan@slenders.be> | 2016-11-07 20:57:33 +0100 |
commit | 144f9c28cf54eaee437197c5dde5b2c6dc7ae385 (patch) | |
tree | cc4761bc53b3a3ff5a70b20c4e63f4d739cc0622 | |
parent | 9b6cd5adfc6892e0bf9251366e03041a45885430 (diff) |
Handle race condition in eventloop/posix.py.
-rw-r--r-- | prompt_toolkit/eventloop/posix.py | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/prompt_toolkit/eventloop/posix.py b/prompt_toolkit/eventloop/posix.py index 0262f4d6..9ca3fc93 100644 --- a/prompt_toolkit/eventloop/posix.py +++ b/prompt_toolkit/eventloop/posix.py @@ -244,7 +244,14 @@ class PosixEventLoop(EventLoop): self._calls_from_executor.append((callback, _max_postpone_until)) if self._schedule_pipe: - os.write(self._schedule_pipe[1], b'x') + try: + os.write(self._schedule_pipe[1], b'x') + except (AttributeError, IndexError, OSError): + # Handle race condition. We're in a different thread. + # - `_schedule_pipe` could have become None in the meantime. + # - We catch `OSError` (actually BrokenPipeError), because the + # main thread could have closed the pipe already. + pass def stop(self): """ |