bpo-38070: Add _PyRuntimeState.preinitializing (GH-16245)

Add _PyRuntimeState.preinitializing field: set to 1 while
Py_PreInitialize() is running.

_PyRuntimeState: rename also pre_initialized field to preinitialized.
This commit is contained in:
Victor Stinner 2019-09-17 23:59:51 +02:00 committed by GitHub
parent b39afb7876
commit d3b904144e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 6 deletions

View file

@ -725,11 +725,15 @@ _Py_PreInitializeFromPyArgv(const PyPreConfig *src_config, const _PyArgv *args)
}
_PyRuntimeState *runtime = &_PyRuntime;
if (runtime->pre_initialized) {
if (runtime->preinitialized) {
/* If it's already configured: ignored the new configuration */
return _PyStatus_OK();
}
/* Note: preinitialized remains 1 on error, it is only set to 0
at exit on success. */
runtime->preinitializing = 1;
PyPreConfig config;
_PyPreConfig_InitFromPreConfig(&config, src_config);
@ -743,7 +747,8 @@ _Py_PreInitializeFromPyArgv(const PyPreConfig *src_config, const _PyArgv *args)
return status;
}
runtime->pre_initialized = 1;
runtime->preinitializing = 0;
runtime->preinitialized = 1;
return _PyStatus_OK();
}
@ -783,7 +788,7 @@ _Py_PreInitializeFromConfig(const PyConfig *config,
}
_PyRuntimeState *runtime = &_PyRuntime;
if (runtime->pre_initialized) {
if (runtime->preinitialized) {
/* Already initialized: do nothing */
return _PyStatus_OK();
}