]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Issue #26081: Fix refleak in _asyncio.Future.__iter__().throw.
authorYury Selivanov <yury@magic.io>
Wed, 9 Nov 2016 00:04:57 +0000 (19:04 -0500)
committerYury Selivanov <yury@magic.io>
Wed, 9 Nov 2016 00:04:57 +0000 (19:04 -0500)
Misc/NEWS
Modules/_asynciomodule.c

index fee8579a94fcfcf45e19bcfc17b3c78ee46d0082..ffbdb8918f36683b6131b13e9fd6d9abcdbd5d48 100644 (file)
--- 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
 -------------
 
index 7df6fa5008b0a78d8ed6c07f6627a3d3d55d30fb..df81b105ec505cdda9acc10c3bdcf25d00c57af7 100644 (file)
@@ -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);
 }