diff --git a/Objects/typeobject.c b/Objects/typeobject.c index f3238da8a642e4..da79285a3f35eb 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -1010,7 +1010,7 @@ set_version_unlocked(PyTypeObject *tp, unsigned int version) _Py_atomic_add_uint16(&tp->tp_versions_used, 1); } #endif - FT_ATOMIC_STORE_UINT32_RELAXED(tp->tp_version_tag, version); + FT_ATOMIC_STORE_UINT_RELAXED(tp->tp_version_tag, version); #ifndef Py_GIL_DISABLED if (version != 0) { PyTypeObject **slot = @@ -1039,7 +1039,8 @@ type_modified_unlocked(PyTypeObject *type) We don't assign new version tags eagerly, but only as needed. */ - if (FT_ATOMIC_LOAD_UINT_RELAXED(type->tp_version_tag) == 0) { + ASSERT_TYPE_LOCK_HELD(); + if (type->tp_version_tag == 0) { return; } // Cannot modify static builtin types. @@ -1093,7 +1094,7 @@ void PyType_Modified(PyTypeObject *type) { // Quick check without the lock held - if (type->tp_version_tag == 0) { + if (FT_ATOMIC_LOAD_UINT_RELAXED(type->tp_version_tag) == 0) { return; }