From 692796a948ab67d75f7010e96b31885eefbd88e5 Mon Sep 17 00:00:00 2001 From: Yury Selivanov Date: Tue, 8 Nov 2016 19:04:57 -0500 Subject: [PATCH] Issue #26081: Fix refleak in _asyncio.Future.__iter__().throw. --- Misc/NEWS | 2 ++ Modules/_asynciomodule.c | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Misc/NEWS b/Misc/NEWS index fee8579a94f..ffbdb8918f3 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -38,6 +38,8 @@ Library - Issue #28634: Fix asyncio.isfuture() to support unittest.Mock. +- Issue #26081: Fix refleak in _asyncio.Future.__iter__().throw. + Documentation ------------- diff --git a/Modules/_asynciomodule.c b/Modules/_asynciomodule.c index 7df6fa5008b..df81b105ec5 100644 --- a/Modules/_asynciomodule.c +++ b/Modules/_asynciomodule.c @@ -1044,14 +1044,16 @@ FutureIter_throw(futureiterobject *self, PyObject *args) else { if (PyExceptionClass_Check(type)) { val = PyObject_CallObject(type, NULL); + PyErr_SetObject(type, val); + Py_DECREF(val); } else { val = type; assert (PyExceptionInstance_Check(val)); type = (PyObject*)Py_TYPE(val); assert (PyExceptionClass_Check(type)); + PyErr_SetObject(type, val); } - PyErr_SetObject(type, val); } return FutureIter_iternext(self); }