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-25 09:52:40 -0700
commit1f1e49dfcbb1858af8a0a09165bb311aac33b423 (patch)
tree44b73a7d3fe54a765f8a6fba98eb94f3b4edcfbf /pym
parent0a64f784003c11e151405b7f708d77770de0ed57 (diff)
downloadportage-1f1e49dfcbb1858af8a0a09165bb311aac33b423.tar.gz
portage-1f1e49dfcbb1858af8a0a09165bb311aac33b423.tar.bz2
portage-1f1e49dfcbb1858af8a0a09165bb311aac33b423.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]