mirror of
https://github.com/python/cpython.git
synced 2025-11-01 02:38:53 +00:00
GH-104510: Fix refleaks in _io base types (#104516)
This commit is contained in:
parent
0bb61dd5b0
commit
442a3e65da
3 changed files with 6 additions and 26 deletions
|
|
@ -2424,13 +2424,6 @@ _io_BufferedRandom___init___impl(buffered *self, PyObject *raw,
|
|||
#include "clinic/bufferedio.c.h"
|
||||
#undef clinic_state
|
||||
|
||||
static int
|
||||
bufferediobase_traverse(PyObject *self, visitproc visit, void *arg)
|
||||
{
|
||||
Py_VISIT(Py_TYPE(self));
|
||||
return 0;
|
||||
}
|
||||
|
||||
static PyMethodDef bufferediobase_methods[] = {
|
||||
_IO__BUFFEREDIOBASE_DETACH_METHODDEF
|
||||
_IO__BUFFEREDIOBASE_READ_METHODDEF
|
||||
|
|
@ -2444,13 +2437,13 @@ static PyMethodDef bufferediobase_methods[] = {
|
|||
static PyType_Slot bufferediobase_slots[] = {
|
||||
{Py_tp_doc, (void *)bufferediobase_doc},
|
||||
{Py_tp_methods, bufferediobase_methods},
|
||||
{Py_tp_traverse, bufferediobase_traverse},
|
||||
{0, NULL},
|
||||
};
|
||||
|
||||
/* Do not set Py_TPFLAGS_HAVE_GC so that tp_traverse and tp_clear are inherited */
|
||||
PyType_Spec bufferediobase_spec = {
|
||||
.name = "_io._BufferedIOBase",
|
||||
.flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC |
|
||||
.flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE |
|
||||
Py_TPFLAGS_IMMUTABLETYPE),
|
||||
.slots = bufferediobase_slots,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1036,13 +1036,6 @@ rawiobase_write(PyObject *self, PyObject *args)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static int
|
||||
rawiobase_traverse(PyObject *self, visitproc visit, void *arg)
|
||||
{
|
||||
Py_VISIT(Py_TYPE(self));
|
||||
return 0;
|
||||
}
|
||||
|
||||
static PyMethodDef rawiobase_methods[] = {
|
||||
_IO__RAWIOBASE_READ_METHODDEF
|
||||
_IO__RAWIOBASE_READALL_METHODDEF
|
||||
|
|
@ -1054,13 +1047,13 @@ static PyMethodDef rawiobase_methods[] = {
|
|||
static PyType_Slot rawiobase_slots[] = {
|
||||
{Py_tp_doc, (void *)rawiobase_doc},
|
||||
{Py_tp_methods, rawiobase_methods},
|
||||
{Py_tp_traverse, rawiobase_traverse},
|
||||
{0, NULL},
|
||||
};
|
||||
|
||||
/* Do not set Py_TPFLAGS_HAVE_GC so that tp_traverse and tp_clear are inherited */
|
||||
PyType_Spec rawiobase_spec = {
|
||||
.name = "_io._RawIOBase",
|
||||
.flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC |
|
||||
.flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE |
|
||||
Py_TPFLAGS_IMMUTABLETYPE),
|
||||
.slots = rawiobase_slots,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -167,12 +167,6 @@ textiobase_errors_get(PyObject *self, void *context)
|
|||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
static int
|
||||
textiobase_traverse(PyObject *self, visitproc visit, void *arg)
|
||||
{
|
||||
Py_VISIT(Py_TYPE(self));
|
||||
return 0;
|
||||
}
|
||||
|
||||
static PyMethodDef textiobase_methods[] = {
|
||||
_IO__TEXTIOBASE_DETACH_METHODDEF
|
||||
|
|
@ -193,13 +187,13 @@ static PyType_Slot textiobase_slots[] = {
|
|||
{Py_tp_doc, (void *)textiobase_doc},
|
||||
{Py_tp_methods, textiobase_methods},
|
||||
{Py_tp_getset, textiobase_getset},
|
||||
{Py_tp_traverse, textiobase_traverse},
|
||||
{0, NULL},
|
||||
};
|
||||
|
||||
/* Do not set Py_TPFLAGS_HAVE_GC so that tp_traverse and tp_clear are inherited */
|
||||
PyType_Spec textiobase_spec = {
|
||||
.name = "_io._TextIOBase",
|
||||
.flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_GC |
|
||||
.flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE |
|
||||
Py_TPFLAGS_IMMUTABLETYPE),
|
||||
.slots = textiobase_slots,
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue