Issue #21677: Fixed chaining nonnormalized exceptions in io close() methods.
diff --git a/Modules/_io/bufferedio.c b/Modules/_io/bufferedio.c
index 7494646..d0e92e5 100644
--- a/Modules/_io/bufferedio.c
+++ b/Modules/_io/bufferedio.c
@@ -549,6 +549,7 @@
}
else {
PyObject *val2;
+ PyErr_NormalizeException(&exc, &val, &tb);
Py_DECREF(exc);
Py_XDECREF(tb);
PyErr_Fetch(&exc, &val2, &tb);
diff --git a/Modules/_io/textio.c b/Modules/_io/textio.c
index ba5789d..55392b4 100644
--- a/Modules/_io/textio.c
+++ b/Modules/_io/textio.c
@@ -2614,6 +2614,7 @@
}
else {
PyObject *val2;
+ PyErr_NormalizeException(&exc, &val, &tb);
Py_DECREF(exc);
Py_XDECREF(tb);
PyErr_Fetch(&exc, &val2, &tb);