summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2018-12-11 08:51:27 (GMT)
committerGitHub <noreply@github.com>2018-12-11 08:51:27 (GMT)
commit3cae16d2e98ffaa89ddd311df70a857dfaff4020 (patch)
tree3670fd9018afba95a6498779d3bc48f376ac720e /Python
parent62674f3a36ec55f86a5f20ee028a37fbd549bd6c (diff)
downloadcpython-3cae16d2e98ffaa89ddd311df70a857dfaff4020.zip
cpython-3cae16d2e98ffaa89ddd311df70a857dfaff4020.tar.gz
cpython-3cae16d2e98ffaa89ddd311df70a857dfaff4020.tar.bz2
bpo-35444: Fix error handling when fail to look up builtin "getattr". (GH-11047) (GH-11107)
(cherry picked from commit bb86bf4c4eaa30b1f5192dab9f389ce0bb61114d)
Diffstat (limited to 'Python')
-rw-r--r--Python/ceval.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/Python/ceval.c b/Python/ceval.c
index 00b2e6d..c394b9b 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -4419,6 +4419,20 @@ PyEval_GetBuiltins(void)
return current_frame->f_builtins;
}
+/* Convenience function to get a builtin from its name */
+PyObject *
+_PyEval_GetBuiltinId(_Py_Identifier *name)
+{
+ PyObject *attr = _PyDict_GetItemIdWithError(PyEval_GetBuiltins(), name);
+ if (attr) {
+ Py_INCREF(attr);
+ }
+ else if (!PyErr_Occurred()) {
+ PyErr_SetObject(PyExc_AttributeError, _PyUnicode_FromId(name));
+ }
+ return attr;
+}
+
PyObject *
PyEval_GetLocals(void)
{