From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Sun, 16 Feb 2025 14:22:23 +0000 (+0100) Subject: [3.13] gh-130179: Fix `persistent_{id,load}_attr` reference leaks in `_pickle` (GH... X-Git-Tag: v3.13.3~267 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2fcad2a47beef88937e1a8f3adba813a33cb31fe;p=thirdparty%2FPython%2Fcpython.git [3.13] gh-130179: Fix `persistent_{id,load}_attr` reference leaks in `_pickle` (GH-130180) (#130190) 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> --- 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) {