Issue #23209: Break some reference cycles in asyncio. Patch written by Martin

Richard.
This commit is contained in:
Victor Stinner 2015-01-09 21:34:27 +01:00
parent 70db9e428a
commit 587feb19e8
3 changed files with 3 additions and 1 deletions

View File

@ -182,6 +182,7 @@ class WriteSubprocessPipeProto(protocols.BaseProtocol):
def connection_lost(self, exc): def connection_lost(self, exc):
self.disconnected = True self.disconnected = True
self.proc._pipe_connection_lost(self.fd, exc) self.proc._pipe_connection_lost(self.fd, exc)
self.proc = None
def pause_writing(self): def pause_writing(self):
self.proc._protocol.pause_writing() self.proc._protocol.pause_writing()

View File

@ -405,5 +405,5 @@ def wrap_future(fut, *, loop=None):
new_future.add_done_callback(_check_cancel_other) new_future.add_done_callback(_check_cancel_other)
fut.add_done_callback( fut.add_done_callback(
lambda future: loop.call_soon_threadsafe( lambda future: loop.call_soon_threadsafe(
new_future._copy_state, fut)) new_future._copy_state, future))
return new_future return new_future

View File

@ -256,6 +256,7 @@ class _BaseSelectorImpl(BaseSelector):
def close(self): def close(self):
self._fd_to_key.clear() self._fd_to_key.clear()
self._map = None
def get_map(self): def get_map(self):
return self._map return self._map