diff options
author | Victor Stinner <vstinner@python.org> | 2023-09-01 10:43:30 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-01 10:43:30 (GMT) |
commit | b936cf4fe084474970ea43dba24386f1b08e75ce (patch) | |
tree | 1e6d94b328a13412f523d6a05c065e4526b57512 /Python/pylifecycle.c | |
parent | 844f4c2e12a7c637d1de93dbbb0718be06553510 (diff) | |
download | cpython-b936cf4fe084474970ea43dba24386f1b08e75ce.zip cpython-b936cf4fe084474970ea43dba24386f1b08e75ce.tar.gz cpython-b936cf4fe084474970ea43dba24386f1b08e75ce.tar.bz2 |
gh-108634: PyInterpreterState_New() no longer calls Py_FatalError() (#108748)
pycore_create_interpreter() now returns a status, rather than
calling Py_FatalError().
* PyInterpreterState_New() now calls Py_ExitStatusException() instead
of calling Py_FatalError() directly.
* Replace Py_FatalError() with PyStatus in init_interpreter() and
_PyObject_InitState().
* _PyErr_SetFromPyStatus() now raises RuntimeError, instead of
ValueError. It can now call PyErr_NoMemory(), raise MemoryError,
if it detects _PyStatus_NO_MEMORY() error message.
Diffstat (limited to 'Python/pylifecycle.c')
-rw-r--r-- | Python/pylifecycle.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index ee5d498..64c74f4 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -629,10 +629,12 @@ pycore_create_interpreter(_PyRuntimeState *runtime, PyThreadState **tstate_p) { PyStatus status; - PyInterpreterState *interp = PyInterpreterState_New(); - if (interp == NULL) { - return _PyStatus_ERR("can't make main interpreter"); + PyInterpreterState *interp; + status = _PyInterpreterState_New(NULL, &interp); + if (_PyStatus_EXCEPTION(status)) { + return status; } + assert(interp != NULL); assert(_Py_IsMainInterpreter(interp)); status = _PyConfig_Copy(&interp->config, src_config); |