From 65c9dc2b8c93e4bbcf92c1c7729c4ce831dae352 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sun, 17 Jul 2016 12:47:17 +0300 Subject: Issue #27419: Standard __import__() no longer look up "__import__" in globals or builtins for importing submodules or "from import". Fixed handling an error of non-string package name. --- Python/import.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'Python') diff --git a/Python/import.c b/Python/import.c index 1312fd0281..c1dc9a06c5 100644 --- a/Python/import.c +++ b/Python/import.c @@ -1438,6 +1438,7 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals, } else if (!PyUnicode_Check(package)) { PyErr_SetString(PyExc_TypeError, "__name__ must be a string"); + goto error; } Py_INCREF(package); @@ -1525,15 +1526,10 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals, _PyImport_AcquireLock(); #endif /* From this point forward, goto error_with_unlock! */ - if (PyDict_Check(globals)) { - builtins_import = _PyDict_GetItemId(globals, &PyId___import__); - } + builtins_import = _PyDict_GetItemId(interp->builtins_copy, &PyId___import__); if (builtins_import == NULL) { - builtins_import = _PyDict_GetItemId(interp->builtins, &PyId___import__); - if (builtins_import == NULL) { - PyErr_SetString(PyExc_ImportError, "__import__ not found"); - goto error_with_unlock; - } + PyErr_SetString(PyExc_ImportError, "__import__ not found"); + goto error_with_unlock; } Py_INCREF(builtins_import); -- cgit v1.2.1