diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2017-07-06 05:38:24 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-06 05:38:24 (GMT) |
commit | 03b0e8374b2ea93adf8fb6a48db2916f3b0388cc (patch) | |
tree | 12743d6b43e1dff7f8bbacab2b6a5f0bb5a72141 /Python/import.c | |
parent | aaa4f991518611d101fba1ef3ecb18d7b385ad5b (diff) | |
download | cpython-03b0e8374b2ea93adf8fb6a48db2916f3b0388cc.zip cpython-03b0e8374b2ea93adf8fb6a48db2916f3b0388cc.tar.gz cpython-03b0e8374b2ea93adf8fb6a48db2916f3b0388cc.tar.bz2 |
[3.6] bpo-30814: Fixed a race condition when import a submodule from a package. (GH-2580). (#2598)
(cherry picked from commit b4baacee1adc06edbe30ac7574d17a8cd168e2e0)
Diffstat (limited to 'Python/import.c')
-rw-r--r-- | Python/import.c | 17 |
1 files changed, 1 insertions, 16 deletions
diff --git a/Python/import.c b/Python/import.c index a23a102..a9aa5b3 100644 --- a/Python/import.c +++ b/Python/import.c @@ -1533,18 +1533,7 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *globals, } mod = PyDict_GetItem(interp->modules, abs_name); - if (mod == Py_None) { - PyObject *msg = PyUnicode_FromFormat("import of %R halted; " - "None in sys.modules", abs_name); - if (msg != NULL) { - PyErr_SetImportErrorSubclass(PyExc_ModuleNotFoundError, msg, - abs_name, NULL); - Py_DECREF(msg); - } - mod = NULL; - goto error; - } - else if (mod != NULL) { + if (mod != NULL && mod != Py_None) { _Py_IDENTIFIER(__spec__); _Py_IDENTIFIER(_initializing); _Py_IDENTIFIER(_lock_unlock_module); @@ -1585,10 +1574,6 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *globals, } } else { -#ifdef WITH_THREAD - _PyImport_AcquireLock(); -#endif - /* _bootstrap._find_and_load() releases the import lock */ mod = _PyObject_CallMethodIdObjArgs(interp->importlib, &PyId__find_and_load, abs_name, interp->import_func, NULL); |