summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2015-01-09 20:34:27 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2015-01-09 20:34:27 (GMT)
commit587feb19e8f9c967e6f88ecd85eca962a57d5410 (patch)
treebe76317326a26551b7bc637ba2dbc478fc3c6841
parent70db9e428aa476682ca80369d09a968b35729845 (diff)
downloadcpython-587feb19e8f9c967e6f88ecd85eca962a57d5410.zip
cpython-587feb19e8f9c967e6f88ecd85eca962a57d5410.tar.gz
cpython-587feb19e8f9c967e6f88ecd85eca962a57d5410.tar.bz2
Issue #23209: Break some reference cycles in asyncio. Patch written by Martin
Richard.
-rw-r--r--Lib/asyncio/base_subprocess.py1
-rw-r--r--Lib/asyncio/futures.py2
-rw-r--r--Lib/selectors.py1
3 files changed, 3 insertions, 1 deletions
diff --git a/Lib/asyncio/base_subprocess.py b/Lib/asyncio/base_subprocess.py
index 81698b0..afc434d 100644
--- a/Lib/asyncio/base_subprocess.py
+++ b/Lib/asyncio/base_subprocess.py
@@ -182,6 +182,7 @@ class WriteSubprocessPipeProto(protocols.BaseProtocol):
def connection_lost(self, exc):
self.disconnected = True
self.proc._pipe_connection_lost(self.fd, exc)
+ self.proc = None
def pause_writing(self):
self.proc._protocol.pause_writing()
diff --git a/Lib/asyncio/futures.py b/Lib/asyncio/futures.py
index e0e12f0..19212a9 100644
--- a/Lib/asyncio/futures.py
+++ b/Lib/asyncio/futures.py
@@ -405,5 +405,5 @@ def wrap_future(fut, *, loop=None):
new_future.add_done_callback(_check_cancel_other)
fut.add_done_callback(
lambda future: loop.call_soon_threadsafe(
- new_future._copy_state, fut))
+ new_future._copy_state, future))
return new_future
diff --git a/Lib/selectors.py b/Lib/selectors.py
index e4ad4cb..b2f4c2b 100644
--- a/Lib/selectors.py
+++ b/Lib/selectors.py
@@ -256,6 +256,7 @@ class _BaseSelectorImpl(BaseSelector):
def close(self):
self._fd_to_key.clear()
+ self._map = None
def get_map(self):
return self._map