1 |
Author: zmedico |
2 |
Date: 2009-09-05 01:26:36 +0000 (Sat, 05 Sep 2009) |
3 |
New Revision: 14185 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/_emerge/PollScheduler.py |
7 |
Log: |
8 |
Bug #282808 - Handle a potential KeyError inside PollScheduler._poll_loop() |
9 |
when _poll_event_queue contains an event for a file descriptor that has |
10 |
already been unregistered. |
11 |
|
12 |
|
13 |
Modified: main/trunk/pym/_emerge/PollScheduler.py |
14 |
=================================================================== |
15 |
--- main/trunk/pym/_emerge/PollScheduler.py 2009-09-04 23:18:40 UTC (rev 14184) |
16 |
+++ main/trunk/pym/_emerge/PollScheduler.py 2009-09-05 01:26:36 UTC (rev 14185) |
17 |
@@ -123,7 +123,14 @@ |
18 |
try: |
19 |
while event_handlers: |
20 |
f, event = self._next_poll_event() |
21 |
- handler, reg_id = event_handlers[f] |
22 |
+ try: |
23 |
+ handler, reg_id = event_handlers[f] |
24 |
+ except KeyError: |
25 |
+ # This means unregister was called for a file descriptor |
26 |
+ # that still had a pending event in _poll_event_queue. |
27 |
+ # Since unregister has been called, we should assume that |
28 |
+ # the event can be safely ignored. |
29 |
+ continue |
30 |
handler(f, event) |
31 |
event_handled = True |
32 |
except StopIteration: |