[3.8] bpo-37994: Fix silencing all errors if an attribute lookup fails. (GH-15630) (GH-15635)

Only AttributeError should be silenced.
(cherry picked from commit 41c57b3353)
This commit is contained in:
Serhiy Storchaka 2019-09-01 14:01:05 +03:00 committed by GitHub
parent 6922b9e4fc
commit 353053d9ad
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 133 additions and 126 deletions

View file

@ -2256,16 +2256,12 @@ builtin_vars(PyObject *self, PyObject *args)
return NULL;
if (v == NULL) {
d = PyEval_GetLocals();
if (d == NULL)
return NULL;
Py_INCREF(d);
Py_XINCREF(d);
}
else {
d = _PyObject_GetAttrId(v, &PyId___dict__);
if (d == NULL) {
if (_PyObject_LookupAttrId(v, &PyId___dict__, &d) == 0) {
PyErr_SetString(PyExc_TypeError,
"vars() argument must have __dict__ attribute");
return NULL;
}
}
return d;