From 5273655bea050432756098641b9fda72361bf983 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Tue, 9 Jan 2024 21:41:02 +0200 Subject: gh-113848: Use PyErr_GivenExceptionMatches() for check for CancelledError (GH-113849) --- Modules/_asynciomodule.c | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/Modules/_asynciomodule.c b/Modules/_asynciomodule.c index 3a11cdc..b929e6d 100644 --- a/Modules/_asynciomodule.c +++ b/Modules/_asynciomodule.c @@ -2754,7 +2754,6 @@ gen_status_from_result(PyObject **result) static PyObject * task_step_impl(asyncio_state *state, TaskObj *task, PyObject *exc) { - int res; int clear_exc = 0; PyObject *result = NULL; PyObject *coro; @@ -2771,20 +2770,7 @@ task_step_impl(asyncio_state *state, TaskObj *task, PyObject *exc) if (task->task_must_cancel) { assert(exc != Py_None); - if (exc) { - /* Check if exc is a CancelledError */ - res = PyObject_IsInstance(exc, state->asyncio_CancelledError); - if (res == -1) { - /* An error occurred, abort */ - goto fail; - } - if (res == 0) { - /* exc is not CancelledError; reset it to NULL */ - exc = NULL; - } - } - - if (!exc) { + if (!exc || !PyErr_GivenExceptionMatches(exc, state->asyncio_CancelledError)) { /* exc was not a CancelledError */ exc = create_cancelled_error(state, (FutureObj*)task); -- cgit v0.12