summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2014-04-27 10:34:39 -0700
committerGuido van Rossum <guido@python.org>2014-04-27 10:34:39 -0700
commita677c26c1f103272afda3cb6de4ceb943bd61e16 (patch)
tree6953db0c46e131e1778d8a8a74637083d060546b
parent5707ff192555de2debd7d9832118b995a08f8f9b (diff)
parent83c1ddda469e7a99f11afc7d6758b3d80ad9aa3b (diff)
downloadcpython-git-a677c26c1f103272afda3cb6de4ceb943bd61e16.tar.gz
Merge 3.4 -> default: asyncio: Be careful accessing instance variables in __del__ (closes #21340).
-rw-r--r--Lib/asyncio/tasks.py4
1 files changed, 3 insertions, 1 deletions
diff --git a/Lib/asyncio/tasks.py b/Lib/asyncio/tasks.py
index c6c22dd29f..e8ee947501 100644
--- a/Lib/asyncio/tasks.py
+++ b/Lib/asyncio/tasks.py
@@ -76,7 +76,9 @@ class CoroWrapper:
return self.gen.gi_code
def __del__(self):
- frame = self.gen.gi_frame
+ # Be careful accessing self.gen.frame -- self.gen might not exist.
+ gen = getattr(self, 'gen', None)
+ frame = getattr(gen, 'gi_frame', None)
if frame is not None and frame.f_lasti == -1:
func = self.func
code = func.__code__