Commit 2cfca797 authored by Benjamin Peterson's avatar Benjamin Peterson

stop throwing out all errors when PyObject_GetAttr fails

parent 0926ad1f
...@@ -988,8 +988,12 @@ TextIOWrapper_init(PyTextIOWrapperObject *self, PyObject *args, PyObject *kwds) ...@@ -988,8 +988,12 @@ TextIOWrapper_init(PyTextIOWrapperObject *self, PyObject *args, PyObject *kwds)
goto error; goto error;
res = PyObject_GetAttrString(ci, "name"); res = PyObject_GetAttrString(ci, "name");
Py_DECREF(ci); Py_DECREF(ci);
if (res == NULL) if (res == NULL) {
PyErr_Clear(); if (PyErr_ExceptionMatches(PyExc_AttributeError))
PyErr_Clear();
else
goto error;
}
else if (PyUnicode_Check(res)) { else if (PyUnicode_Check(res)) {
encodefuncentry *e = encodefuncs; encodefuncentry *e = encodefuncs;
while (e->name != NULL) { while (e->name != NULL) {
...@@ -1011,8 +1015,12 @@ TextIOWrapper_init(PyTextIOWrapperObject *self, PyObject *args, PyObject *kwds) ...@@ -1011,8 +1015,12 @@ TextIOWrapper_init(PyTextIOWrapperObject *self, PyObject *args, PyObject *kwds)
Py_TYPE(buffer) == &PyBufferedRandom_Type) { Py_TYPE(buffer) == &PyBufferedRandom_Type) {
raw = PyObject_GetAttrString(buffer, "raw"); raw = PyObject_GetAttrString(buffer, "raw");
/* Cache the raw FileIO object to speed up 'closed' checks */ /* Cache the raw FileIO object to speed up 'closed' checks */
if (raw == NULL) if (raw == NULL) {
PyErr_Clear(); if (PyErr_ExceptionMatches(PyExc_AttributeError))
PyErr_Clear();
else
goto error;
}
else if (Py_TYPE(raw) == &PyFileIO_Type) else if (Py_TYPE(raw) == &PyFileIO_Type)
self->raw = raw; self->raw = raw;
else else
...@@ -2468,8 +2476,13 @@ TextIOWrapper_newlines_get(PyTextIOWrapperObject *self, void *context) ...@@ -2468,8 +2476,13 @@ TextIOWrapper_newlines_get(PyTextIOWrapperObject *self, void *context)
Py_RETURN_NONE; Py_RETURN_NONE;
res = PyObject_GetAttr(self->decoder, _PyIO_str_newlines); res = PyObject_GetAttr(self->decoder, _PyIO_str_newlines);
if (res == NULL) { if (res == NULL) {
PyErr_Clear(); if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
Py_RETURN_NONE; PyErr_Clear();
Py_RETURN_NONE;
}
else {
return NULL;
}
} }
return res; return res;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment