mirror of
https://github.com/python/cpython.git
synced 2025-12-04 00:30:19 +00:00
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.
This commit is contained in:
parent
844f4c2e12
commit
b936cf4fe0
7 changed files with 101 additions and 53 deletions
|
|
@ -22,7 +22,7 @@ struct pyruntimestate;
|
|||
#endif
|
||||
|
||||
#define _PyStatus_OK() \
|
||||
(PyStatus){._type = _PyStatus_TYPE_OK,}
|
||||
(PyStatus){._type = _PyStatus_TYPE_OK}
|
||||
/* other fields are set to 0 */
|
||||
#define _PyStatus_ERR(ERR_MSG) \
|
||||
(PyStatus){ \
|
||||
|
|
@ -30,7 +30,8 @@ struct pyruntimestate;
|
|||
.func = _PyStatus_GET_FUNC(), \
|
||||
.err_msg = (ERR_MSG)}
|
||||
/* other fields are set to 0 */
|
||||
#define _PyStatus_NO_MEMORY() _PyStatus_ERR("memory allocation failed")
|
||||
#define _PyStatus_NO_MEMORY_ERRMSG "memory allocation failed"
|
||||
#define _PyStatus_NO_MEMORY() _PyStatus_ERR(_PyStatus_NO_MEMORY_ERRMSG)
|
||||
#define _PyStatus_EXIT(EXITCODE) \
|
||||
(PyStatus){ \
|
||||
._type = _PyStatus_TYPE_EXIT, \
|
||||
|
|
@ -45,7 +46,7 @@ struct pyruntimestate;
|
|||
do { (err).func = _PyStatus_GET_FUNC(); } while (0)
|
||||
|
||||
// Export for '_testinternalcapi' shared extension
|
||||
PyAPI_FUNC(PyObject *) _PyErr_SetFromPyStatus(PyStatus status);
|
||||
PyAPI_FUNC(void) _PyErr_SetFromPyStatus(PyStatus status);
|
||||
|
||||
|
||||
/* --- PyWideStringList ------------------------------------------------ */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue