From d863ade0c7fa4826e8b71aa467809c83a711f019 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Fri, 6 Dec 2019 03:37:07 +0100 Subject: [PATCH] bpo-38858: Add pycore_interp_init() code to factorize code (GH-17483) Add a new pycore_interp_init() function called by new_interpreter() and pyinit_config(). --- Python/pylifecycle.c | 62 +++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 35 deletions(-) diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index 9822cce4ae3..8bd71a350de 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -701,6 +701,31 @@ pycore_init_import_warnings(PyThreadState *tstate, PyObject *sysmod) } +static PyStatus +pycore_interp_init(PyThreadState *tstate) +{ + PyStatus status; + + status = pycore_init_types(tstate); + if (_PyStatus_EXCEPTION(status)) { + return status; + } + + PyObject *sysmod; + status = _PySys_Create(tstate, &sysmod); + if (_PyStatus_EXCEPTION(status)) { + return status; + } + + status = pycore_init_builtins(tstate); + if (_PyStatus_EXCEPTION(status)) { + return status; + } + + return pycore_init_import_warnings(tstate, sysmod); +} + + static PyStatus pyinit_config(_PyRuntimeState *runtime, PyThreadState **tstate_p, @@ -721,23 +746,7 @@ pyinit_config(_PyRuntimeState *runtime, config = &tstate->interp->config; *tstate_p = tstate; - status = pycore_init_types(tstate); - if (_PyStatus_EXCEPTION(status)) { - return status; - } - - PyObject *sysmod; - status = _PySys_Create(tstate, &sysmod); - if (_PyStatus_EXCEPTION(status)) { - return status; - } - - status = pycore_init_builtins(tstate); - if (_PyStatus_EXCEPTION(status)) { - return status; - } - - status = pycore_init_import_warnings(tstate, sysmod); + status = pycore_interp_init(tstate); if (_PyStatus_EXCEPTION(status)) { return status; } @@ -1549,25 +1558,8 @@ new_interpreter(PyThreadState **tstate_p) if (_PyStatus_EXCEPTION(status)) { goto error; } - config = &interp->config; - status = pycore_init_types(tstate); - if (_PyStatus_EXCEPTION(status)) { - goto error; - } - - PyObject *sysmod; - status = _PySys_Create(tstate, &sysmod); - if (_PyStatus_EXCEPTION(status)) { - return status; - } - - status = pycore_init_builtins(tstate); - if (_PyStatus_EXCEPTION(status)) { - goto error; - } - - status = pycore_init_import_warnings(tstate, sysmod); + status = pycore_interp_init(tstate); if (_PyStatus_EXCEPTION(status)) { goto error; }