bpo-38304: PyConfig_InitPythonConfig() cannot fail anymore (GH-16509)

PyConfig_InitPythonConfig() and PyConfig_InitIsolatedConfig() no
longer return PyStatus: they cannot fail anymore.
This commit is contained in:
Victor Stinner 2019-10-01 12:06:16 +02:00 committed by GitHub
parent 3c30a76f3d
commit 8462a4936b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 56 additions and 216 deletions

View file

@ -40,11 +40,7 @@ Py_FrozenMain(int argc, char **argv)
}
PyConfig config;
status = PyConfig_InitPythonConfig(&config);
if (PyStatus_Exception(status)) {
PyConfig_Clear(&config);
Py_ExitStatusException(status);
}
PyConfig_InitPythonConfig(&config);
config.pathconfig_warnings = 0; /* Suppress errors from getpath.c */
if ((p = Py_GETENV("PYTHONINSPECT")) && *p != '\0')

View file

@ -569,7 +569,7 @@ PyConfig_Clear(PyConfig *config)
}
PyStatus
void
_PyConfig_InitCompatConfig(PyConfig *config)
{
memset(config, 0, sizeof(*config));
@ -603,17 +603,13 @@ _PyConfig_InitCompatConfig(PyConfig *config)
#ifdef MS_WINDOWS
config->legacy_windows_stdio = -1;
#endif
return _PyStatus_OK();
}
static PyStatus
static void
config_init_defaults(PyConfig *config)
{
PyStatus status = _PyConfig_InitCompatConfig(config);
if (_PyStatus_EXCEPTION(status)) {
return status;
}
_PyConfig_InitCompatConfig(config);
config->isolated = 0;
config->use_environment = 1;
@ -632,35 +628,24 @@ config_init_defaults(PyConfig *config)
#ifdef MS_WINDOWS
config->legacy_windows_stdio = 0;
#endif
return _PyStatus_OK();
}
PyStatus
void
PyConfig_InitPythonConfig(PyConfig *config)
{
PyStatus status = config_init_defaults(config);
if (_PyStatus_EXCEPTION(status)) {
_PyStatus_UPDATE_FUNC(status);
return status;
}
config_init_defaults(config);
config->_config_init = (int)_PyConfig_INIT_PYTHON;
config->configure_c_stdio = 1;
config->parse_argv = 1;
return _PyStatus_OK();
}
PyStatus
void
PyConfig_InitIsolatedConfig(PyConfig *config)
{
PyStatus status = config_init_defaults(config);
if (_PyStatus_EXCEPTION(status)) {
_PyStatus_UPDATE_FUNC(status);
return status;
}
config_init_defaults(config);
config->_config_init = (int)_PyConfig_INIT_ISOLATED;
config->isolated = 1;
@ -675,8 +660,6 @@ PyConfig_InitIsolatedConfig(PyConfig *config)
#ifdef MS_WINDOWS
config->legacy_windows_stdio = 0;
#endif
return _PyStatus_OK();
}

View file

@ -432,16 +432,11 @@ _PyConfig_InitPathConfig(PyConfig *config)
static PyStatus
pathconfig_global_read(_PyPathConfig *pathconfig)
{
PyStatus status;
PyConfig config;
status = _PyConfig_InitCompatConfig(&config);
if (_PyStatus_EXCEPTION(status)) {
goto done;
}
_PyConfig_InitCompatConfig(&config);
/* Call _PyConfig_InitPathConfig() */
status = PyConfig_Read(&config);
PyStatus status = PyConfig_Read(&config);
if (_PyStatus_EXCEPTION(status)) {
goto done;
}

View file

@ -847,11 +847,7 @@ pyinit_core(_PyRuntimeState *runtime,
}
PyConfig config;
status = _PyConfig_InitCompatConfig(&config);
if (_PyStatus_EXCEPTION(status)) {
goto done;
}
_PyConfig_InitCompatConfig(&config);
status = _PyConfig_Copy(&config, src_config);
if (_PyStatus_EXCEPTION(status)) {
@ -1073,11 +1069,7 @@ Py_InitializeEx(int install_sigs)
}
PyConfig config;
status = _PyConfig_InitCompatConfig(&config);
if (_PyStatus_EXCEPTION(status)) {
Py_ExitStatusException(status);
}
_PyConfig_InitCompatConfig(&config);
config.install_signal_handlers = install_sigs;

View file

@ -205,14 +205,7 @@ PyInterpreterState_New(void)
memset(interp, 0, sizeof(*interp));
interp->id_refcount = -1;
PyStatus status = PyConfig_InitPythonConfig(&interp->config);
if (_PyStatus_EXCEPTION(status)) {
/* Don't report status to caller: PyConfig_InitPythonConfig()
can only fail with a memory allocation error. */
PyConfig_Clear(&interp->config);
PyMem_RawFree(interp);
return NULL;
}
PyConfig_InitPythonConfig(&interp->config);
interp->eval_frame = _PyEval_EvalFrameDefault;
#ifdef HAVE_DLOPEN