gh-128360: Add _Py_AssertHoldsTstate as assertion for holding a thread state (#128361)

Co-authored-by: Kumar Aditya <kumaraditya@python.org>
This commit is contained in:
Peter Bierma 2025-01-20 06:34:35 -05:00 committed by GitHub
parent c6b570e5e3
commit 4d0a6595a0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 48 additions and 32 deletions

View file

@ -300,6 +300,19 @@ PyAPI_FUNC(const PyConfig*) _Py_GetConfig(void);
// See also PyInterpreterState_Get() and _PyInterpreterState_GET().
extern PyInterpreterState* _PyGILState_GetInterpreterStateUnsafe(void);
#ifndef NDEBUG
/* Modern equivalent of assert(PyGILState_Check()) */
static inline void
_Py_AssertHoldsTstateFunc(const char *func)
{
PyThreadState *tstate = _PyThreadState_GET();
_Py_EnsureFuncTstateNotNULL(func, tstate);
}
#define _Py_AssertHoldsTstate() _Py_AssertHoldsTstateFunc(__func__)
#else
#define _Py_AssertHoldsTstate()
#endif
#ifdef __cplusplus
}
#endif