gh-113848: Use PyErr_GivenExceptionMatches() for check for CancelledError (GH-113849)

This commit is contained in:
Serhiy Storchaka 2024-01-09 21:41:02 +02:00 committed by GitHub
parent 9100fc407e
commit 5273655bea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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);