summaryrefslogtreecommitdiffstats
path: root/Python/import.c
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2012-04-18 14:55:43 (GMT)
committerBenjamin Peterson <benjamin@python.org>2012-04-18 14:55:43 (GMT)
commitd76bc7abac37ac345878ed2db7e264f59fc79985 (patch)
tree0c933be1c1ebc649ba9279935cc75c13b05346fd /Python/import.c
parentda20cd2b6bf40d712f6296b9e21ff099b22aab71 (diff)
downloadcpython-d76bc7abac37ac345878ed2db7e264f59fc79985.zip
cpython-d76bc7abac37ac345878ed2db7e264f59fc79985.tar.gz
cpython-d76bc7abac37ac345878ed2db7e264f59fc79985.tar.bz2
rollback 005fd1fe31ab (see #14609 and #14582)
Being able to overload a sys.module entry during import of a module was broken by this changeset.
Diffstat (limited to 'Python/import.c')
-rw-r--r--Python/import.c19
1 files changed, 6 insertions, 13 deletions
diff --git a/Python/import.c b/Python/import.c
index 07c3d6f..11d58ae 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -2447,22 +2447,15 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals,
Py_DECREF(partition);
if (level == 0) {
- if (PyUnicode_GET_LENGTH(name) ==
- PyUnicode_GET_LENGTH(front)) {
- final_mod = mod;
- }
- else {
- final_mod = PyDict_GetItem(interp->modules, front);
- if (final_mod == NULL) {
- PyErr_Format(PyExc_KeyError,
- "%R not in sys.modules as expected", front);
- }
- }
+ final_mod = PyDict_GetItem(interp->modules, front);
Py_DECREF(front);
if (final_mod == NULL) {
- goto error_with_unlock;
+ PyErr_Format(PyExc_KeyError,
+ "%R not in sys.modules as expected", front);
+ }
+ else {
+ Py_INCREF(final_mod);
}
- Py_INCREF(final_mod);
}
else {
Py_ssize_t cut_off = PyUnicode_GET_LENGTH(name) -