summaryrefslogtreecommitdiffstats
path: root/Modules/_io/bufferedio.c
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2019-08-29 06:25:22 (GMT)
committerGitHub <noreply@github.com>2019-08-29 06:25:22 (GMT)
commitb235a1b47394eedc5f8ea4cf214f56c4c6932e59 (patch)
tree462594be94793d0fa1b757c8352925286e54264b /Modules/_io/bufferedio.c
parentf5896a05edf5df91fb1b55bd481ba5b2a3682f4e (diff)
downloadcpython-b235a1b47394eedc5f8ea4cf214f56c4c6932e59.zip
cpython-b235a1b47394eedc5f8ea4cf214f56c4c6932e59.tar.gz
cpython-b235a1b47394eedc5f8ea4cf214f56c4c6932e59.tar.bz2
bpo-37960: Silence only necessary errors in repr() of buffered and text streams. (GH-15543)
Diffstat (limited to 'Modules/_io/bufferedio.c')
-rw-r--r--Modules/_io/bufferedio.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/Modules/_io/bufferedio.c b/Modules/_io/bufferedio.c
index 86dd277..586e93f 100644
--- a/Modules/_io/bufferedio.c
+++ b/Modules/_io/bufferedio.c
@@ -1378,12 +1378,14 @@ buffered_repr(buffered *self)
{
PyObject *nameobj, *res;
- nameobj = _PyObject_GetAttrId((PyObject *) self, &PyId_name);
- if (nameobj == NULL) {
- if (PyErr_ExceptionMatches(PyExc_Exception))
- PyErr_Clear();
- else
+ if (_PyObject_LookupAttrId((PyObject *) self, &PyId_name, &nameobj) < 0) {
+ if (!PyErr_ExceptionMatches(PyExc_ValueError)) {
return NULL;
+ }
+ /* Ignore ValueError raised if the underlying stream was detached */
+ PyErr_Clear();
+ }
+ if (nameobj == NULL) {
res = PyUnicode_FromFormat("<%s>", Py_TYPE(self)->tp_name);
}
else {