mirror of
https://github.com/python/cpython.git
synced 2025-07-12 13:55:34 +00:00
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.
This commit is contained in:
parent
dec25afab1
commit
b3b65e618c
2 changed files with 8 additions and 8 deletions
|
@ -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);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue