summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2012-02-11 15:56:07 -0800
committerZac Medico <zmedico@gentoo.org>2012-02-11 15:56:07 -0800
commitea8cb012d563bdce3eeeec6f85874503b0048928 (patch)
treeb0b98e7a1ded1dee0813c6d1c340610169413e96
parent33d82be6f57cb845ae957309be9a4ab4303de0de (diff)
downloadportage-ea8cb012d563bdce3eeeec6f85874503b0048928.tar.gz
portage-ea8cb012d563bdce3eeeec6f85874503b0048928.tar.bz2
portage-ea8cb012d563bdce3eeeec6f85874503b0048928.zip
EventLoop.iteration: handle _poll StopIteration
-rw-r--r--pym/portage/util/_eventloop/EventLoop.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/pym/portage/util/_eventloop/EventLoop.py b/pym/portage/util/_eventloop/EventLoop.py
index c059197c1..0da388d03 100644
--- a/pym/portage/util/_eventloop/EventLoop.py
+++ b/pym/portage/util/_eventloop/EventLoop.py
@@ -177,7 +177,13 @@ class EventLoop(object):
timeout = self._timeout_interval
else:
timeout = 0
- self._poll(timeout=timeout)
+ try:
+ self._poll(timeout=timeout)
+ except StopIteration:
+ # This could happen if there are no IO event handlers
+ # after _poll() calls _run_timeouts(), due to them
+ # being removed by timeout or idle callbacks.
+ events_handled += 1
try:
while event_handlers and self._poll_event_queue: