mirror of
https://github.com/python/cpython.git
synced 2025-09-14 12:46:49 +00:00
bpo-38304: Add PyConfig.struct_size (GH-16451)
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.
This commit is contained in:
parent
52d1b86bde
commit
441b10cf28
13 changed files with 350 additions and 60 deletions
|
@ -735,7 +735,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)) {
|
||||
|
@ -794,7 +799,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);
|
||||
|
@ -842,7 +852,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)) {
|
||||
|
@ -1064,7 +1079,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