◐ Shell
clean mode source ↗

bpo-38997: Revert commits 6e157fa and 5df5dbe by pablogsal · Pull Request #17509 · python/cpython

Expand Up @@ -622,8 +622,6 @@ pycore_init_types(PyThreadState *tstate) static PyStatus pycore_init_builtins(PyThreadState *tstate) { assert(!_PyErr_Occurred(tstate));
PyObject *bimod = _PyBuiltin_Init(tstate); if (bimod == NULL) { goto error; Expand Down Expand Up @@ -651,9 +649,6 @@ pycore_init_builtins(PyThreadState *tstate) goto error; } Py_DECREF(bimod);
assert(!_PyErr_Occurred(tstate));
return _PyStatus_OK();
error: Expand All @@ -665,14 +660,13 @@ pycore_init_builtins(PyThreadState *tstate) static PyStatus pycore_init_import_warnings(PyThreadState *tstate, PyObject *sysmod) { assert(!_PyErr_Occurred(tstate)); const PyConfig *config = &tstate->interp->config;
PyStatus status = _PyImportHooks_Init(tstate); if (_PyStatus_EXCEPTION(status)) { return status; }
const PyConfig *config = &tstate->interp->config; if (_Py_IsMainInterpreter(tstate)) { /* Initialize _warnings. */ if (_PyWarnings_Init() == NULL) { Expand All @@ -694,59 +688,47 @@ pycore_init_import_warnings(PyThreadState *tstate, PyObject *sysmod) return status; } }
assert(!_PyErr_Occurred(tstate));
return _PyStatus_OK(); }

static PyStatus pycore_interp_init(PyThreadState *tstate) pyinit_config(_PyRuntimeState *runtime, PyThreadState **tstate_p, const PyConfig *config) { PyStatus status; _PyConfig_Write(config, runtime);
status = pycore_init_types(tstate); PyStatus status = pycore_init_runtime(runtime, config); if (_PyStatus_EXCEPTION(status)) { return status; }
PyObject *sysmod; status = _PySys_Create(tstate, &sysmod); PyThreadState *tstate; status = pycore_create_interpreter(runtime, config, &tstate); if (_PyStatus_EXCEPTION(status)) { return status; } config = &tstate->interp->config; *tstate_p = tstate;
status = pycore_init_builtins(tstate); status = pycore_init_types(tstate); if (_PyStatus_EXCEPTION(status)) { return status; }
return pycore_init_import_warnings(tstate, sysmod); }

static PyStatus pyinit_config(_PyRuntimeState *runtime, PyThreadState **tstate_p, const PyConfig *config) { _PyConfig_Write(config, runtime);
PyStatus status = pycore_init_runtime(runtime, config); PyObject *sysmod; status = _PySys_Create(tstate, &sysmod); if (_PyStatus_EXCEPTION(status)) { return status; }
PyThreadState *tstate; status = pycore_create_interpreter(runtime, config, &tstate); status = pycore_init_builtins(tstate); if (_PyStatus_EXCEPTION(status)) { return status; } config = &tstate->interp->config; *tstate_p = tstate;
status = pycore_interp_init(tstate); status = pycore_init_import_warnings(tstate, sysmod); if (_PyStatus_EXCEPTION(status)) { return status; } Expand Down Expand Up @@ -947,8 +929,6 @@ _Py_ReconfigureMainInterpreter(PyThreadState *tstate) static PyStatus init_interp_main(PyThreadState *tstate) { assert(!_PyErr_Occurred(tstate));
PyStatus status; int is_main_interp = _Py_IsMainInterpreter(tstate); PyInterpreterState *interp = tstate->interp; Expand All @@ -970,10 +950,10 @@ init_interp_main(PyThreadState *tstate) if (_PyTime_Init() < 0) { return _PyStatus_ERR("can't initialize time"); } }
if (_PySys_InitMain(tstate) < 0) { return _PyStatus_ERR("can't finish initializing sys"); if (_PySys_InitMain(tstate) < 0) { return _PyStatus_ERR("can't finish initializing sys"); } }
status = init_importlib_external(tstate); Expand Down Expand Up @@ -1051,8 +1031,6 @@ init_interp_main(PyThreadState *tstate) #endif }
assert(!_PyErr_Occurred(tstate));
return _PyStatus_OK(); }
Expand Down Expand Up @@ -1556,23 +1534,70 @@ new_interpreter(PyThreadState **tstate_p)
status = _PyConfig_Copy(&interp->config, config); if (_PyStatus_EXCEPTION(status)) { goto error; goto done; } config = &interp->config;
status = pycore_interp_init(tstate); if (_PyStatus_EXCEPTION(status)) { goto error; status = pycore_init_types(tstate);
/* XXX The following is lax in error checking */ PyObject *modules = PyDict_New(); if (modules == NULL) { status = _PyStatus_ERR("can't make modules dictionary"); goto done; } interp->modules = modules;
PyObject *sysmod = _PyImport_FindBuiltin(tstate, "sys"); if (sysmod != NULL) { interp->sysdict = PyModule_GetDict(sysmod); if (interp->sysdict == NULL) { goto handle_exc; } Py_INCREF(interp->sysdict); PyDict_SetItemString(interp->sysdict, "modules", modules); if (_PySys_InitMain(tstate) < 0) { status = _PyStatus_ERR("can't finish initializing sys"); goto done; } } else if (_PyErr_Occurred(tstate)) { goto handle_exc; }
status = init_interp_main(tstate); status = pycore_init_builtins(tstate); if (_PyStatus_EXCEPTION(status)) { goto error; goto done; }
if (sysmod != NULL) { status = _PySys_SetPreliminaryStderr(interp->sysdict); if (_PyStatus_EXCEPTION(status)) { goto done; }
status = pycore_init_import_warnings(tstate, sysmod); if (_PyStatus_EXCEPTION(status)) { goto done; }
status = init_interp_main(tstate); if (_PyStatus_EXCEPTION(status)) { goto done; } }
if (_PyErr_Occurred(tstate)) { goto handle_exc; }
*tstate_p = tstate; return _PyStatus_OK();
error: handle_exc: status = _PyStatus_OK();
done: *tstate_p = NULL;
/* Oops, it didn't work. Undo it all. */ Expand Down