mirror of
https://github.com/python/cpython.git
synced 2025-07-24 19:54:21 +00:00
bpo-38304: Add PyConfig.struct_size (GH-16451) (GH-16453)
Add a new struct_size field to PyPreConfig and PyConfig structures to
allow to modify these structures in the future without breaking the
backward compatibility.
* Replace private _config_version field with public struct_size field
in PyPreConfig and PyConfig.
* Public PyPreConfig_InitIsolatedConfig() and
PyPreConfig_InitPythonConfig()
return type becomes PyStatus, instead of void.
* Internal _PyConfig_InitCompatConfig(),
_PyPreConfig_InitCompatConfig(), _PyPreConfig_InitFromConfig(),
_PyPreConfig_InitFromPreConfig() return type becomes PyStatus,
instead of void.
* Remove _Py_CONFIG_VERSION
* Update the Initialization Configuration documentation.
(cherry picked from commit 441b10cf28
)
This commit is contained in:
parent
8750bce988
commit
6e128382b3
13 changed files with 350 additions and 60 deletions
|
@ -731,7 +731,12 @@ _Py_PreInitializeFromPyArgv(const PyPreConfig *src_config, const _PyArgv *args)
|
|||
runtime->preinitializing = 1;
|
||||
|
||||
PyPreConfig config;
|
||||
_PyPreConfig_InitFromPreConfig(&config, src_config);
|
||||
config.struct_size = sizeof(PyPreConfig);
|
||||
|
||||
status = _PyPreConfig_InitFromPreConfig(&config, src_config);
|
||||
if (_PyStatus_EXCEPTION(status)) {
|
||||
return status;
|
||||
}
|
||||
|
||||
status = _PyPreConfig_Read(&config, args);
|
||||
if (_PyStatus_EXCEPTION(status)) {
|
||||
|
@ -790,7 +795,12 @@ _Py_PreInitializeFromConfig(const PyConfig *config,
|
|||
}
|
||||
|
||||
PyPreConfig preconfig;
|
||||
_PyPreConfig_InitFromConfig(&preconfig, config);
|
||||
preconfig.struct_size = sizeof(PyPreConfig);
|
||||
|
||||
status = _PyPreConfig_InitFromConfig(&preconfig, config);
|
||||
if (_PyStatus_EXCEPTION(status)) {
|
||||
return status;
|
||||
}
|
||||
|
||||
if (!config->parse_argv) {
|
||||
return Py_PreInitialize(&preconfig);
|
||||
|
@ -838,7 +848,12 @@ pyinit_core(_PyRuntimeState *runtime,
|
|||
}
|
||||
|
||||
PyConfig config;
|
||||
_PyConfig_InitCompatConfig(&config);
|
||||
config.struct_size = sizeof(PyConfig);
|
||||
|
||||
status = _PyConfig_InitCompatConfig(&config);
|
||||
if (_PyStatus_EXCEPTION(status)) {
|
||||
goto done;
|
||||
}
|
||||
|
||||
status = _PyConfig_Copy(&config, src_config);
|
||||
if (_PyStatus_EXCEPTION(status)) {
|
||||
|
@ -1061,7 +1076,13 @@ Py_InitializeEx(int install_sigs)
|
|||
}
|
||||
|
||||
PyConfig config;
|
||||
_PyConfig_InitCompatConfig(&config);
|
||||
config.struct_size = sizeof(PyConfig);
|
||||
|
||||
status = _PyConfig_InitCompatConfig(&config);
|
||||
if (_PyStatus_EXCEPTION(status)) {
|
||||
Py_ExitStatusException(status);
|
||||
}
|
||||
|
||||
config.install_signal_handlers = install_sigs;
|
||||
|
||||
status = Py_InitializeFromConfig(&config);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue