From: Serhiy Storchaka Date: Tue, 9 Jan 2024 19:41:02 +0000 (+0200) Subject: gh-113848: Use PyErr_GivenExceptionMatches() for check for CancelledError (GH-113849) X-Git-Tag: v3.13.0a3~128 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5273655bea050432756098641b9fda72361bf983;p=thirdparty%2FPython%2Fcpython.git gh-113848: Use PyErr_GivenExceptionMatches() for check for CancelledError (GH-113849) --- diff --git a/Modules/_asynciomodule.c b/Modules/_asynciomodule.c index 3a11cdc926f1..b929e6d9922b 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);