diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2019-08-29 06:25:22 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-29 06:25:22 (GMT) |
commit | b235a1b47394eedc5f8ea4cf214f56c4c6932e59 (patch) | |
tree | 462594be94793d0fa1b757c8352925286e54264b /Modules/_io/bufferedio.c | |
parent | f5896a05edf5df91fb1b55bd481ba5b2a3682f4e (diff) | |
download | cpython-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.c | 12 |
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 { |