mirror of
https://github.com/python/cpython.git
synced 2026-01-08 08:22:41 +00:00
gh-116946: fully implement GC protocol for bz2 objects (#138266)
This commit is contained in:
parent
11a5fc8238
commit
9be91f6a20
1 changed files with 9 additions and 8 deletions
|
|
@ -381,13 +381,14 @@ _bz2_BZ2Compressor_impl(PyTypeObject *type, int compresslevel)
|
|||
static void
|
||||
BZ2Compressor_dealloc(PyObject *op)
|
||||
{
|
||||
PyTypeObject *tp = Py_TYPE(op);
|
||||
PyObject_GC_UnTrack(op);
|
||||
BZ2Compressor *self = _BZ2Compressor_CAST(op);
|
||||
BZ2_bzCompressEnd(&self->bzs);
|
||||
if (self->lock != NULL) {
|
||||
PyThread_free_lock(self->lock);
|
||||
}
|
||||
PyTypeObject *tp = Py_TYPE(self);
|
||||
tp->tp_free((PyObject *)self);
|
||||
tp->tp_free(self);
|
||||
Py_DECREF(tp);
|
||||
}
|
||||
|
||||
|
|
@ -420,7 +421,7 @@ static PyType_Spec bz2_compressor_type_spec = {
|
|||
// bz2_compressor_type_spec does not have Py_TPFLAGS_BASETYPE flag
|
||||
// which prevents to create a subclass.
|
||||
// So calling PyType_GetModuleState() in this file is always safe.
|
||||
.flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_IMMUTABLETYPE),
|
||||
.flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_HAVE_GC),
|
||||
.slots = bz2_compressor_type_slots,
|
||||
};
|
||||
|
||||
|
|
@ -687,9 +688,11 @@ _bz2_BZ2Decompressor_impl(PyTypeObject *type)
|
|||
static void
|
||||
BZ2Decompressor_dealloc(PyObject *op)
|
||||
{
|
||||
PyTypeObject *tp = Py_TYPE(op);
|
||||
PyObject_GC_UnTrack(op);
|
||||
BZ2Decompressor *self = _BZ2Decompressor_CAST(op);
|
||||
|
||||
if(self->input_buffer != NULL) {
|
||||
if (self->input_buffer != NULL) {
|
||||
PyMem_Free(self->input_buffer);
|
||||
}
|
||||
BZ2_bzDecompressEnd(&self->bzs);
|
||||
|
|
@ -697,9 +700,7 @@ BZ2Decompressor_dealloc(PyObject *op)
|
|||
if (self->lock != NULL) {
|
||||
PyThread_free_lock(self->lock);
|
||||
}
|
||||
|
||||
PyTypeObject *tp = Py_TYPE(self);
|
||||
tp->tp_free((PyObject *)self);
|
||||
tp->tp_free(self);
|
||||
Py_DECREF(tp);
|
||||
}
|
||||
|
||||
|
|
@ -751,7 +752,7 @@ static PyType_Spec bz2_decompressor_type_spec = {
|
|||
// bz2_decompressor_type_spec does not have Py_TPFLAGS_BASETYPE flag
|
||||
// which prevents to create a subclass.
|
||||
// So calling PyType_GetModuleState() in this file is always safe.
|
||||
.flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_IMMUTABLETYPE),
|
||||
.flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_HAVE_GC),
|
||||
.slots = bz2_decompressor_type_slots,
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue