bpo-38631: _PyGILState_Init() returns PyStatus (GH-18908)
_PyGILState_Init() now returns PyStatus rather than calling Py_FatalError() on failure.
This commit is contained in:
parent
88f82b2b9e
commit
4e53abb0f4
|
@ -83,7 +83,7 @@ extern void _PyHash_Fini(void);
|
|||
extern void _PyTraceMalloc_Fini(void);
|
||||
extern void _PyWarnings_Fini(PyInterpreterState *interp);
|
||||
|
||||
extern void _PyGILState_Init(PyThreadState *tstate);
|
||||
extern PyStatus _PyGILState_Init(PyThreadState *tstate);
|
||||
extern void _PyGILState_Fini(PyThreadState *tstate);
|
||||
|
||||
PyAPI_FUNC(void) _PyGC_DumpShutdownStats(PyThreadState *tstate);
|
||||
|
|
|
@ -551,7 +551,10 @@ pycore_create_interpreter(_PyRuntimeState *runtime,
|
|||
_PyEval_FiniThreads(&runtime->ceval);
|
||||
|
||||
/* Auto-thread-state API */
|
||||
_PyGILState_Init(tstate);
|
||||
status = _PyGILState_Init(tstate);
|
||||
if (_PyStatus_EXCEPTION(status)) {
|
||||
return status;
|
||||
}
|
||||
|
||||
/* Create the GIL */
|
||||
status = _PyEval_InitThreads(tstate);
|
||||
|
|
|
@ -1147,7 +1147,7 @@ PyThreadState_IsCurrent(PyThreadState *tstate)
|
|||
/* Internal initialization/finalization functions called by
|
||||
Py_Initialize/Py_FinalizeEx
|
||||
*/
|
||||
void
|
||||
PyStatus
|
||||
_PyGILState_Init(PyThreadState *tstate)
|
||||
{
|
||||
/* must init with valid states */
|
||||
|
@ -1157,13 +1157,14 @@ _PyGILState_Init(PyThreadState *tstate)
|
|||
struct _gilstate_runtime_state *gilstate = &tstate->interp->runtime->gilstate;
|
||||
|
||||
if (PyThread_tss_create(&gilstate->autoTSSkey) != 0) {
|
||||
Py_FatalError("Could not allocate TSS entry");
|
||||
return _PyStatus_NO_MEMORY();
|
||||
}
|
||||
gilstate->autoInterpreterState = tstate->interp;
|
||||
assert(PyThread_tss_get(&gilstate->autoTSSkey) == NULL);
|
||||
assert(tstate->gilstate_counter == 0);
|
||||
|
||||
_PyGILState_NoteThreadState(gilstate, tstate);
|
||||
return _PyStatus_OK();
|
||||
}
|
||||
|
||||
PyInterpreterState *
|
||||
|
|
Loading…
Reference in New Issue