Skip to content

Commit

Permalink
pythongh-122332: Fix missing NULL check in asyncio.Task.get_coro (p…
Browse files Browse the repository at this point in the history
  • Loading branch information
ZeroIntensity authored Jul 27, 2024
1 parent 863a92f commit c086962
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 1 deletion.
12 changes: 12 additions & 0 deletions Lib/test/test_asyncio/test_eager_task_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,18 @@ class DummyLoop:
_, out, err = assert_python_ok("-c", code)
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:
def __init__(self, loop, *, task_class, eager):
self.suspense_count = 0
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Fixed segfault with :meth:`asyncio.Task.get_coro` when using an eager task
factory.
6 changes: 5 additions & 1 deletion Modules/_asynciomodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -2500,7 +2500,11 @@ static PyObject *
_asyncio_Task_get_coro_impl(TaskObj *self)
/*[clinic end generated code: output=bcac27c8cc6c8073 input=d2e8606c42a7b403]*/
{
return Py_NewRef(self->task_coro);
if (self->task_coro) {
return Py_NewRef(self->task_coro);
}

Py_RETURN_NONE;
}

/*[clinic input]
Expand Down

0 comments on commit c086962

Please sign in to comment.