Browse Source
bpo-38631: Replace Py_FatalError() with assert() in ceval.c (GH-18279)
Replace a few Py_FatalError() calls if tstate is NULL with
assert(tstate != NULL) in ceval.c.
PyEval_AcquireThread(), PyEval_ReleaseThread() and
PyEval_RestoreThread() must never be called with a NULL tstate.
pull/18278/head
Victor Stinner
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
5 additions and
11 deletions
Doc/c-api/init.rst
Python/ceval.c
@ -1110,7 +1110,7 @@ All of the following functions must be called after :c:func:`Py_Initialize`.
.. c:function :: void PyEval_AcquireThread(PyThreadState *tstate)
Acquire the global interpreter lock and set the current thread state to
*tstate* , which should not be `` NULL `` . The lock must have been created earlier.
*tstate* , which must not be `` NULL `` . The lock must have been created earlier.
If this thread already has the lock, deadlock ensues.
.. note ::
@ -302,9 +302,7 @@ PyEval_ReleaseLock(void)
void
PyEval_AcquireThread ( PyThreadState * tstate )
{
if ( tstate = = NULL ) {
Py_FatalError ( " PyEval_AcquireThread: NULL new thread state " ) ;
}
assert ( tstate ! = NULL ) ;
_PyRuntimeState * runtime = tstate - > interp - > runtime ;
struct _ceval_runtime_state * ceval = & runtime - > ceval ;
@ -321,9 +319,7 @@ PyEval_AcquireThread(PyThreadState *tstate)
void
PyEval_ReleaseThread ( PyThreadState * tstate )
{
if ( tstate = = NULL ) {
Py_FatalError ( " PyEval_ReleaseThread: NULL thread state " ) ;
}
assert ( tstate ! = NULL ) ;
_PyRuntimeState * runtime = tstate - > interp - > runtime ;
PyThreadState * new_tstate = _PyThreadState_Swap ( & runtime - > gilstate , NULL ) ;
@ -385,12 +381,10 @@ PyEval_SaveThread(void)
void
PyEval_RestoreThread ( PyThreadState * tstate )
{
assert ( tstate ! = NULL ) ;
_PyRuntimeState * runtime = tstate - > interp - > runtime ;
struct _ceval_runtime_state * ceval = & runtime - > ceval ;
if ( tstate = = NULL ) {
Py_FatalError ( " PyEval_RestoreThread: NULL tstate " ) ;
}
assert ( gil_created ( & ceval - > gil ) ) ;
int err = errno ;