bpo-43268: Pass interp rather than tstate to internal functions (GH-24580)
Pass the current interpreter (interp) rather than the current Python
thread state (tstate) to internal functions which only use the
interpreter.
Modified functions:
* _PyXXX_Fini() and _PyXXX_ClearFreeList() functions
* _PyEval_SignalAsyncExc(), make_pending_calls()
* _PySys_GetObject(), sys_set_object(), sys_set_object_id(), sys_set_object_str()
* should_audit(), set_flags_from_config(), make_flags()
* _PyAtExit_Call()
* init_stdio_encoding()
* etc.
diff --git a/Objects/bytesobject.c b/Objects/bytesobject.c
index ccabbdc..5814e8a 100644
--- a/Objects/bytesobject.c
+++ b/Objects/bytesobject.c
@@ -3063,9 +3063,9 @@ _PyBytes_Resize(PyObject **pv, Py_ssize_t newsize)
PyStatus
-_PyBytes_Init(PyThreadState *tstate)
+_PyBytes_Init(PyInterpreterState *interp)
{
- struct _Py_bytes_state *state = &tstate->interp->bytes;
+ struct _Py_bytes_state *state = &interp->bytes;
if (bytes_create_empty_string_singleton(state) < 0) {
return _PyStatus_NO_MEMORY();
}
@@ -3074,9 +3074,9 @@ _PyBytes_Init(PyThreadState *tstate)
void
-_PyBytes_Fini(PyThreadState *tstate)
+_PyBytes_Fini(PyInterpreterState *interp)
{
- struct _Py_bytes_state* state = &tstate->interp->bytes;
+ struct _Py_bytes_state* state = &interp->bytes;
for (int i = 0; i < UCHAR_MAX + 1; i++) {
Py_CLEAR(state->characters[i]);
}