From 3cae16d2e98ffaa89ddd311df70a857dfaff4020 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Tue, 11 Dec 2018 10:51:27 +0200 Subject: bpo-35444: Fix error handling when fail to look up builtin "getattr". (GH-11047) (GH-11107) (cherry picked from commit bb86bf4c4eaa30b1f5192dab9f389ce0bb61114d) --- Python/ceval.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'Python') diff --git a/Python/ceval.c b/Python/ceval.c index 00b2e6d85f..c394b9b482 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) { -- cgit v1.2.1