Skip to content

Commit da082ac

Browse files
committed
Enforce tp_traverse/clear in AllocateTypeObject
1 parent a6efeae commit da082ac

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

src/runtime/TypeManager.cs

+5
Original file line numberDiff line numberDiff line change
@@ -620,6 +620,11 @@ internal static PyType AllocateTypeObject(string name, PyType metatype)
620620
Util.WriteRef(type, TypeOffset.name, new NewReference(temp).Steal());
621621
Util.WriteRef(type, TypeOffset.qualname, temp.Steal());
622622

623+
// Ensure that tp_traverse and tp_clear are always set, since their
624+
// existence is enforced in newer Python versions in PyType_Ready
625+
Util.WriteIntPtr(type, TypeOffset.tp_traverse, subtype_traverse);
626+
Util.WriteIntPtr(type, TypeOffset.tp_clear, subtype_clear);
627+
623628
InheritSubstructs(type.Reference.DangerousGetAddress());
624629

625630
return type;

0 commit comments

Comments
 (0)