summaryrefslogtreecommitdiffstats
path: root/Objects
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 /Objects
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 'Objects')
-rw-r--r--Objects/object.c5
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