From: Victor Stinner Date: Mon, 27 Jan 2020 21:37:05 +0000 (+0100) Subject: bpo-38631: Avoid Py_FatalError() in PyModule_Create2() (GH-18212) X-Git-Tag: v3.9.0a4~204 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a94c6b61aa5c09237b8105e5aee638cd54197b6f;p=thirdparty%2FPython%2Fcpython.git bpo-38631: Avoid Py_FatalError() in PyModule_Create2() (GH-18212) If PyModule_Create2() is called when the Python import machinery is not initialized, it now raises a SystemError and returns NULL, instead of calling Py_FatalError() which aborts the process. The caller must be prepared to handle NULL anyway. --- diff --git a/Objects/moduleobject.c b/Objects/moduleobject.c index 03c7381311aa..912c25840158 100644 --- a/Objects/moduleobject.c +++ b/Objects/moduleobject.c @@ -173,8 +173,11 @@ _add_methods_to_object(PyObject *module, PyObject *name, PyMethodDef *functions) PyObject * PyModule_Create2(struct PyModuleDef* module, int module_api_version) { - if (!_PyImport_IsInitialized(_PyInterpreterState_Get())) - Py_FatalError("Python import machinery not initialized"); + if (!_PyImport_IsInitialized(_PyInterpreterState_Get())) { + PyErr_SetString(PyExc_SystemError, + "Python import machinery not initialized"); + return NULL; + } return _PyModule_CreateInitialized(module, module_api_version); }