summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-03-25 09:52:40 -0700
committerZac Medico <zmedico@gentoo.org>2011-03-26 12:22:13 -0700
commit918947179b82ceec2c624bcdd5bc8a182dd3a462 (patch)
tree29378d41bd77c447fbda81b1b30fbfbb1b2654db /pym
parent35faac42c5958278240ffe7cd3e88f1c050f404b (diff)
downloadportage-918947179b82ceec2c624bcdd5bc8a182dd3a462.tar.gz
portage-918947179b82ceec2c624bcdd5bc8a182dd3a462.tar.bz2
portage-918947179b82ceec2c624bcdd5bc8a182dd3a462.zip
PollScheduler: tweak _unregister event cleanup
Diffstat (limited to 'pym')
-rw-r--r--pym/_emerge/PollScheduler.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/pym/_emerge/PollScheduler.py b/pym/_emerge/PollScheduler.py
index 043f02a8b..a2b5c2466 100644
--- a/pym/_emerge/PollScheduler.py
+++ b/pym/_emerge/PollScheduler.py
@@ -250,13 +250,17 @@ class PollScheduler(object):
# delivered to a future handler that is using a reallocated
# file descriptor of the same numeric value (causing
# extremely confusing bugs).
- remove = set()
+ remaining_events = []
+ discarded_events = False
for event in self._poll_event_queue:
if event[0] == f:
- remove.add(event)
- if remove:
- self._poll_event_queue[:] = [event for event in \
- self._poll_event_queue if event not in remove]
+ discarded_events = True
+ else:
+ remaining_events.append(event)
+
+ if discarded_events:
+ self._poll_event_queue[:] = remaining_events
+
del self._poll_event_handlers[f]
del self._poll_event_handler_ids[reg_id]