_PyType_Fini(PyThreadState *tstate)
{
_PyType_ClearCache(&tstate->interp->type_cache);
- clear_slotdefs();
+ if (_Py_IsMainInterpreter(tstate)) {
+ clear_slotdefs();
+ }
}
static void
-unicode_clear_identifiers(PyThreadState *tstate)
+unicode_clear_identifiers(struct _Py_unicode_state *state)
{
- PyInterpreterState *interp = _PyInterpreterState_GET();
- struct _Py_unicode_ids *ids = &interp->unicode.ids;
+ struct _Py_unicode_ids *ids = &state->ids;
for (Py_ssize_t i=0; i < ids->size; i++) {
Py_XDECREF(ids->array[i]);
}
_PyUnicode_FiniEncodings(&state->fs_codec);
- unicode_clear_identifiers(tstate);
+ unicode_clear_identifiers(state);
for (Py_ssize_t i = 0; i < 256; i++) {
Py_CLEAR(state->latin1[i]);
_PyFrame_Fini(tstate);
_PyAsyncGen_Fini(tstate);
_PyContext_Fini(tstate);
+ _PyType_Fini(tstate);
// Call _PyUnicode_ClearInterned() before _PyDict_Fini() since it uses
// a dict internally.
_PyUnicode_ClearInterned(tstate);
/* Destroy the database used by _PyImport_{Fixup,Find}Extension */
_PyImport_Fini();
- /* Cleanup typeobject.c's internal caches. */
- _PyType_Fini(tstate);
-
/* unload faulthandler module */
_PyFaulthandler_Fini();