mirror of
https://github.com/python/cpython.git
synced 2025-08-03 08:34:29 +00:00
bpo-28411: Remove "modules" field from Py_InterpreterState. (#1638)
sys.modules is the one true source.
This commit is contained in:
parent
f5ea83f486
commit
86b7afdfee
18 changed files with 261 additions and 111 deletions
|
@ -160,12 +160,18 @@ _add_methods_to_object(PyObject *module, PyObject *name, PyMethodDef *functions)
|
|||
|
||||
PyObject *
|
||||
PyModule_Create2(struct PyModuleDef* module, int module_api_version)
|
||||
{
|
||||
if (!_PyImport_IsInitialized(PyThreadState_GET()->interp))
|
||||
Py_FatalError("Python import machinery not initialized");
|
||||
return _PyModule_CreateInitialized(module, module_api_version);
|
||||
}
|
||||
|
||||
PyObject *
|
||||
_PyModule_CreateInitialized(struct PyModuleDef* module, int module_api_version)
|
||||
{
|
||||
const char* name;
|
||||
PyModuleObject *m;
|
||||
PyInterpreterState *interp = PyThreadState_Get()->interp;
|
||||
if (interp->modules == NULL)
|
||||
Py_FatalError("Python import machinery not initialized");
|
||||
|
||||
if (!PyModuleDef_Init(module))
|
||||
return NULL;
|
||||
name = module->m_name;
|
||||
|
|
|
@ -3901,7 +3901,6 @@ import_copyreg(void)
|
|||
{
|
||||
PyObject *copyreg_str;
|
||||
PyObject *copyreg_module;
|
||||
PyInterpreterState *interp = PyThreadState_GET()->interp;
|
||||
_Py_IDENTIFIER(copyreg);
|
||||
|
||||
copyreg_str = _PyUnicode_FromId(&PyId_copyreg);
|
||||
|
@ -3913,7 +3912,7 @@ import_copyreg(void)
|
|||
by storing a reference to the cached module in a static variable, but
|
||||
this broke when multiple embedded interpreters were in use (see issue
|
||||
#17408 and #19088). */
|
||||
copyreg_module = PyDict_GetItemWithError(interp->modules, copyreg_str);
|
||||
copyreg_module = _PyImport_GetModuleWithError(copyreg_str);
|
||||
if (copyreg_module != NULL) {
|
||||
Py_INCREF(copyreg_module);
|
||||
return copyreg_module;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue