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 /Objects | |
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 'Objects')
-rw-r--r-- | Objects/object.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/Objects/object.c b/Objects/object.c index a4d7111..7aeda50 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -2034,7 +2034,7 @@ PyObject _Py_NotImplementedStruct = { }; -void +PyStatus _PyObject_InitState(PyInterpreterState *interp) { #ifdef Py_TRACE_REFS @@ -2048,9 +2048,10 @@ _PyObject_InitState(PyInterpreterState *interp) _Py_hashtable_hash_ptr, _Py_hashtable_compare_direct, NULL, NULL, &alloc); if (REFCHAIN(interp) == NULL) { - Py_FatalError("_PyObject_InitState() memory allocation failure"); + return _PyStatus_NO_MEMORY(); } #endif + return _PyStatus_OK(); } void |