Pablo Galindo Salgado <[email protected]> added the comment:
> Now we changed rules. A strong reference is created implicitly. Who is
> responsible to manage a strong reference? Whose who created it, ant it is the
> interpreter, not the user.
Even if we decide that the patch that introduced the new rules should not be
reverted, then what we should do is wrap the tp_traverse of the user in
something that also calls Py_VISIT(Py_TYPE(self)) so basically the tp_traverse
of the type created by PyType_FromSpec will do
static int
PyType_FromSpec_tp_traverse(_abc_data *self, visitproc visit, void *arg)
{
Py_VISIT(Py_TYPE(self))
return self->user_provided_tp_traverse(self, visit, arg);
}
That way, we can still reason about what the tp_traverse should do, we don't
break more rules and we don't need to make maintaining the GC even more
difficult.
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue40217>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com