summaryrefslogtreecommitdiff
path: root/Python/pylifecycle.c
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@redhat.com>2019-09-17 23:59:51 +0200
committerGitHub <noreply@github.com>2019-09-17 23:59:51 +0200
commitd3b904144e86e2442961de6a7dccecbe133d5c6d (patch)
tree0663e8625cbadbb1fce208e16902ee0bc7753fa8 /Python/pylifecycle.c
parentb39afb78768418d9405c4b528c80fa968ccc974d (diff)
downloadcpython-git-d3b904144e86e2442961de6a7dccecbe133d5c6d.tar.gz
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.
Diffstat (limited to 'Python/pylifecycle.c')
-rw-r--r--Python/pylifecycle.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index ea89b3a626..1bc7f608a1 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -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();
}