mirror of
https://github.com/python/cpython.git
synced 2025-07-15 15:25:29 +00:00
bpo-34170: _PyCoreConfig_Read() leaves Py_IsolatedFlag unchanged (GH-8361)
* _PyCoreConfig_Read() no longer directly modifies Py_IsolatedFlag and Py_NoSiteFlag global configuration flags. The function now requires two pointers to integer, so these flags can be set later, to avoid side effets in _PyCoreConfig_Read(). * pathconfig_global_init() now leaves Py_IsolatedFlag and Py_NoSiteFlag unchanged. * Fix pathconfig_global_init(): avoid computing the path configuration twice, use _PyCoreConfig_SetPathConfig().
This commit is contained in:
parent
c884616390
commit
f2626ce6d4
6 changed files with 44 additions and 41 deletions
|
@ -283,7 +283,8 @@ core_config_init_module_search_paths(_PyCoreConfig *config,
|
|||
|
||||
|
||||
_PyInitError
|
||||
_PyCoreConfig_InitPathConfig(_PyCoreConfig *config)
|
||||
_PyCoreConfig_InitPathConfig(_PyCoreConfig *config,
|
||||
int *isolated, int *no_site_import)
|
||||
{
|
||||
_PyPathConfig path_config = _PyPathConfig_INIT;
|
||||
_PyInitError err;
|
||||
|
@ -344,6 +345,13 @@ _PyCoreConfig_InitPathConfig(_PyCoreConfig *config)
|
|||
}
|
||||
}
|
||||
|
||||
if (path_config.isolated != -1 && isolated != NULL) {
|
||||
*isolated = path_config.isolated;
|
||||
}
|
||||
if (path_config.no_site_import != -1 && no_site_import != NULL) {
|
||||
*no_site_import = path_config.no_site_import;
|
||||
}
|
||||
|
||||
_PyPathConfig_Clear(&path_config);
|
||||
return _Py_INIT_OK();
|
||||
|
||||
|
@ -365,30 +373,25 @@ pathconfig_global_init(void)
|
|||
}
|
||||
|
||||
_PyInitError err;
|
||||
_PyPathConfig path_config = _PyPathConfig_INIT;
|
||||
_PyCoreConfig config = _PyCoreConfig_INIT;
|
||||
|
||||
err = _PyCoreConfig_Read(&config);
|
||||
/* Py_IsolatedFlag and Py_NoSiteFlag are left unchanged: pass NULL.
|
||||
_PyCoreConfig_InitPathConfig() will be called later and will set
|
||||
these flags. */
|
||||
err = _PyCoreConfig_Read(&config, NULL, NULL);
|
||||
if (_Py_INIT_FAILED(err)) {
|
||||
goto error;
|
||||
}
|
||||
|
||||
err = _PyPathConfig_Calculate(&path_config, &config);
|
||||
err = _PyCoreConfig_SetPathConfig(&config);
|
||||
if (_Py_INIT_FAILED(err)) {
|
||||
goto error;
|
||||
}
|
||||
|
||||
err = _PyPathConfig_SetGlobal(&path_config);
|
||||
if (_Py_INIT_FAILED(err)) {
|
||||
goto error;
|
||||
}
|
||||
|
||||
_PyPathConfig_Clear(&path_config);
|
||||
_PyCoreConfig_Clear(&config);
|
||||
return;
|
||||
|
||||
error:
|
||||
_PyPathConfig_Clear(&path_config);
|
||||
_PyCoreConfig_Clear(&config);
|
||||
_Py_FatalInitError(err);
|
||||
}
|
||||
|
|
|
@ -928,7 +928,7 @@ _Py_InitializeEx_Private(int install_sigs, int install_importlib)
|
|||
config._disable_importlib = !install_importlib;
|
||||
config.install_signal_handlers = install_sigs;
|
||||
|
||||
err = _PyCoreConfig_Read(&config);
|
||||
err = _PyCoreConfig_Read(&config, &Py_IsolatedFlag, &Py_NoSiteFlag);
|
||||
if (_Py_INIT_FAILED(err)) {
|
||||
goto done;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue