summaryrefslogtreecommitdiffstats
path: root/Python/pylifecycle.c
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2023-09-01 10:43:30 (GMT)
committerGitHub <noreply@github.com>2023-09-01 10:43:30 (GMT)
commitb936cf4fe084474970ea43dba24386f1b08e75ce (patch)
tree1e6d94b328a13412f523d6a05c065e4526b57512 /Python/pylifecycle.c
parent844f4c2e12a7c637d1de93dbbb0718be06553510 (diff)
downloadcpython-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.c8
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);