diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2016-07-17 09:51:34 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2016-07-17 09:51:34 (GMT) |
commit | 7905f99a27c82fb31218805d4b859fc0dbefbcec (patch) | |
tree | 5db7857fd2c7587e0772e1584ad558bc64d541dc /Python | |
parent | 3410c01d83d70ceef48b735c247aebd2d5bd3411 (diff) | |
parent | b3b65e618c31e37458d5da46c8216f7c0404f547 (diff) | |
download | cpython-7905f99a27c82fb31218805d4b859fc0dbefbcec.zip cpython-7905f99a27c82fb31218805d4b859fc0dbefbcec.tar.gz cpython-7905f99a27c82fb31218805d4b859fc0dbefbcec.tar.bz2 |
Issue #27419: Standard __import__() no longer look up "__import__" in globals
or builtins for importing submodules or "from import". Fixed a crash if
raise a warning about unabling to resolve package from __spec__ or
__package__.
Diffstat (limited to 'Python')
-rw-r--r-- | Python/import.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/Python/import.c b/Python/import.c index bdc7e4c..7a2c92e 100644 --- a/Python/import.c +++ b/Python/import.c @@ -1452,6 +1452,7 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals, } } else { + package = NULL; if (PyErr_WarnEx(PyExc_ImportWarning, "can't resolve package from __spec__ or __package__, " "falling back on __name__ and __path__", 1) < 0) { @@ -1556,15 +1557,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); |