diff --git a/Modules/_decimal/_decimal.c b/Modules/_decimal/_decimal.c --- a/Modules/_decimal/_decimal.c +++ b/Modules/_decimal/_decimal.c @@ -5343,7 +5343,7 @@ static PyMethodDef _decimal_methods [] = static struct PyModuleDef _decimal_module = { PyModuleDef_HEAD_INIT, - "decimal", + "_decimal", doc__decimal, -1, _decimal_methods, diff --git a/Modules/_io/_iomodule.c b/Modules/_io/_iomodule.c --- a/Modules/_io/_iomodule.c +++ b/Modules/_io/_iomodule.c @@ -574,7 +574,7 @@ static PyMethodDef module_methods[] = { struct PyModuleDef _PyIO_Module = { PyModuleDef_HEAD_INIT, - "io", + "_io", module_doc, sizeof(_PyIO_State), module_methods, diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -2731,6 +2731,13 @@ PyInit__testcapi(void) m = PyModule_Create(&_testcapimodule); if (m == NULL) return NULL; + /* Import ourselves recursively and look up an attribute */ + if (PyRun_SimpleString("import _testcapi; _testcapi.test_list_api")) { + PyErr_SetString(PyExc_RuntimeError, + "_testcapi recursive import failed"); + Py_DECREF(m); + return NULL; + } Py_TYPE(&_HashInheritanceTester_Type)=&PyType_Type; diff --git a/Objects/moduleobject.c b/Objects/moduleobject.c --- a/Objects/moduleobject.c +++ b/Objects/moduleobject.c @@ -110,8 +110,10 @@ PyModule_Create2(struct PyModuleDef* mod _Py_PackageContext = NULL; } } - if ((m = (PyModuleObject*)PyModule_New(name)) == NULL) + if ((m = (PyModuleObject *) PyImport_AddModule(name)) == NULL) return NULL; + assert(PyModule_Check(m)); + Py_INCREF(m); if (module->m_size > 0) { m->md_state = PyMem_MALLOC(module->m_size);