mirror of
https://github.com/python/cpython.git
synced 2026-01-04 14:32:21 +00:00
gh-130179: Fix persistent_{id,load}_attr reference leaks in _pickle (#130180)
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
This commit is contained in:
parent
56495f81fc
commit
e7f00cd14f
1 changed files with 4 additions and 0 deletions
|
|
@ -4725,6 +4725,7 @@ Pickler_clear(PicklerObject *self)
|
|||
Py_CLEAR(self->output_buffer);
|
||||
Py_CLEAR(self->write);
|
||||
Py_CLEAR(self->persistent_id);
|
||||
Py_CLEAR(self->persistent_id_attr);
|
||||
Py_CLEAR(self->dispatch_table);
|
||||
Py_CLEAR(self->fast_memo);
|
||||
Py_CLEAR(self->reducer_override);
|
||||
|
|
@ -4754,6 +4755,7 @@ Pickler_traverse(PicklerObject *self, visitproc visit, void *arg)
|
|||
Py_VISIT(Py_TYPE(self));
|
||||
Py_VISIT(self->write);
|
||||
Py_VISIT(self->persistent_id);
|
||||
Py_VISIT(self->persistent_id_attr);
|
||||
Py_VISIT(self->dispatch_table);
|
||||
Py_VISIT(self->fast_memo);
|
||||
Py_VISIT(self->reducer_override);
|
||||
|
|
@ -7227,6 +7229,7 @@ Unpickler_clear(UnpicklerObject *self)
|
|||
Py_CLEAR(self->peek);
|
||||
Py_CLEAR(self->stack);
|
||||
Py_CLEAR(self->persistent_load);
|
||||
Py_CLEAR(self->persistent_load_attr);
|
||||
Py_CLEAR(self->buffers);
|
||||
if (self->buffer.buf != NULL) {
|
||||
PyBuffer_Release(&self->buffer);
|
||||
|
|
@ -7266,6 +7269,7 @@ Unpickler_traverse(UnpicklerObject *self, visitproc visit, void *arg)
|
|||
Py_VISIT(self->peek);
|
||||
Py_VISIT(self->stack);
|
||||
Py_VISIT(self->persistent_load);
|
||||
Py_VISIT(self->persistent_load_attr);
|
||||
Py_VISIT(self->buffers);
|
||||
PyObject **memo = self->memo;
|
||||
if (memo) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue