diff options
author | Victor Stinner <vstinner@redhat.com> | 2019-03-23 11:05:43 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-23 11:05:43 (GMT) |
commit | 6d5ee973f0600a3a9444f569dcf0dd346bfa2a11 (patch) | |
tree | d10610b71d1dbff047e5ed912d82bff298e45537 /Python/coreconfig.c | |
parent | 2b75155590eb42d25e474b776ee9fdcc4b3dc840 (diff) | |
download | cpython-6d5ee973f0600a3a9444f569dcf0dd346bfa2a11.zip cpython-6d5ee973f0600a3a9444f569dcf0dd346bfa2a11.tar.gz cpython-6d5ee973f0600a3a9444f569dcf0dd346bfa2a11.tar.bz2 |
bpo-36301: Add _PyRuntimeState.preconfig (GH-12506)
_PyPreConfig_Write() now writes the applied pre-configuration into
_PyRuntimeState.preconfig.
Diffstat (limited to 'Python/coreconfig.c')
-rw-r--r-- | Python/coreconfig.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/Python/coreconfig.c b/Python/coreconfig.c index 1881f00..540e608 100644 --- a/Python/coreconfig.c +++ b/Python/coreconfig.c @@ -5,6 +5,7 @@ #include "pycore_getopt.h" #include "pycore_pylifecycle.h" #include "pycore_pymem.h" +#include "pycore_pystate.h" /* _PyRuntime */ #include "pycore_pathconfig.h" #include <locale.h> /* setlocale() */ #ifdef HAVE_LANGINFO_H @@ -1358,6 +1359,17 @@ done: } +static _PyInitError +_PyCoreConfig_GetPreConfig(_PyCoreConfig *config) +{ + /* Read config written by _PyPreConfig_Write() */ + if (_PyPreConfig_Copy(&config->preconfig, &_PyRuntime.preconfig) < 0) { + return _Py_INIT_NO_MEMORY(); + } + return _Py_INIT_OK(); +} + + /* Read the configuration into _PyCoreConfig from: * Environment variables @@ -1374,6 +1386,11 @@ _PyCoreConfig_Read(_PyCoreConfig *config, const _PyPreConfig *preconfig) return err; } + err = _PyCoreConfig_GetPreConfig(config); + if (_Py_INIT_FAILED(err)) { + return err; + } + _PyCoreConfig_GetGlobalConfig(config); if (preconfig != NULL) { @@ -2117,6 +2134,11 @@ _PyCoreConfig_ReadFromArgv(_PyCoreConfig *config, const _PyArgv *args, { _PyInitError err; + err = _Py_PreInitialize(); + if (_Py_INIT_FAILED(err)) { + return err; + } + _PyCmdline cmdline = {.precmdline = _PyPreCmdline_INIT}; err = _PyPreCmdline_Init(&cmdline.precmdline, args); |