From 2fcad2a47beef88937e1a8f3adba813a33cb31fe Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Sun, 16 Feb 2025 15:22:23 +0100 Subject: [PATCH] [3.13] gh-130179: Fix `persistent_{id,load}_attr` reference leaks in `_pickle` (GH-130180) (#130190) MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit gh-130179: Fix `persistent_{id,load}_attr` reference leaks in `_pickle` (GH-130180) (cherry picked from commit e7f00cd14f6a0c0dee6e733ac3e2c5d92e0809bb) Co-authored-by: Sergey Miryanov Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com> --- Modules/_pickle.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Modules/_pickle.c b/Modules/_pickle.c index 9bb3947e0967..83c4ba6087e6 100644 --- a/Modules/_pickle.c +++ b/Modules/_pickle.c @@ -4652,6 +4652,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); @@ -4681,6 +4682,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); @@ -7138,6 +7140,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); @@ -7177,6 +7180,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) { -- 2.47.3