Bug #282808 - Handle a potential KeyError inside PollScheduler._poll_loop()
authorZac Medico <zmedico@gentoo.org>
Sat, 5 Sep 2009 01:26:36 +0000 (01:26 -0000)
committerZac Medico <zmedico@gentoo.org>
Sat, 5 Sep 2009 01:26:36 +0000 (01:26 -0000)
when _poll_event_queue contains an event for a file descriptor that has
already been unregistered.

svn path=/main/trunk/; revision=14185

pym/_emerge/PollScheduler.py

index 3733af45be416a328819931e64270b1e7766bc34..8250cb00a3a49b239fd809d8193c8554c96cd98e 100644 (file)
@@ -123,7 +123,14 @@ class PollScheduler(object):
                try:
                        while event_handlers:
                                f, event = self._next_poll_event()
-                               handler, reg_id = event_handlers[f]
+                               try:
+                                       handler, reg_id = event_handlers[f]
+                               except KeyError:
+                                       # This means unregister was called for a file descriptor
+                                       # that still had a pending event in _poll_event_queue.
+                                       # Since unregister has been called, we should assume that
+                                       # the event can be safely ignored.
+                                       continue
                                handler(f, event)
                                event_handled = True
                except StopIteration: