mirror of https://github.com/python/cpython
gh-122332: Fix missing `NULL` check in `asyncio.Task.get_coro` (#122338)
This commit is contained in:
parent
863a92f2bc
commit
c08696286f
|
@ -241,6 +241,18 @@ class CEagerTaskFactoryLoopTests(EagerTaskFactoryLoopTests, test_utils.TestCase)
|
||||||
_, out, err = assert_python_ok("-c", code)
|
_, out, err = assert_python_ok("-c", code)
|
||||||
self.assertFalse(err)
|
self.assertFalse(err)
|
||||||
|
|
||||||
|
def test_issue122332(self):
|
||||||
|
async def coro():
|
||||||
|
pass
|
||||||
|
|
||||||
|
async def run():
|
||||||
|
task = self.loop.create_task(coro())
|
||||||
|
await task
|
||||||
|
self.assertIsNone(task.get_coro())
|
||||||
|
|
||||||
|
self.run_coro(run())
|
||||||
|
|
||||||
|
|
||||||
class AsyncTaskCounter:
|
class AsyncTaskCounter:
|
||||||
def __init__(self, loop, *, task_class, eager):
|
def __init__(self, loop, *, task_class, eager):
|
||||||
self.suspense_count = 0
|
self.suspense_count = 0
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
Fixed segfault with :meth:`asyncio.Task.get_coro` when using an eager task
|
||||||
|
factory.
|
|
@ -2500,9 +2500,13 @@ static PyObject *
|
||||||
_asyncio_Task_get_coro_impl(TaskObj *self)
|
_asyncio_Task_get_coro_impl(TaskObj *self)
|
||||||
/*[clinic end generated code: output=bcac27c8cc6c8073 input=d2e8606c42a7b403]*/
|
/*[clinic end generated code: output=bcac27c8cc6c8073 input=d2e8606c42a7b403]*/
|
||||||
{
|
{
|
||||||
|
if (self->task_coro) {
|
||||||
return Py_NewRef(self->task_coro);
|
return Py_NewRef(self->task_coro);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Py_RETURN_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
/*[clinic input]
|
/*[clinic input]
|
||||||
_asyncio.Task.get_context
|
_asyncio.Task.get_context
|
||||||
[clinic start generated code]*/
|
[clinic start generated code]*/
|
||||||
|
|
Loading…
Reference in New Issue