cpython: c33e4881721f (original) (raw)

Mercurial > cpython

changeset 99283:c33e4881721f 2.7

Issue #19687: Fixed memory leak on failed Element slice assignment. [#19687]

Serhiy Storchaka storchaka@gmail.com
date Sun, 22 Nov 2015 12:31:11 +0200
parents fd47601145dd
children de5582c569ff
files Modules/_elementtree.c
diffstat 1 files changed, 6 insertions(+), 10 deletions(-)[+] [-] Modules/_elementtree.c 16

line wrap: on

line diff

--- a/Modules/_elementtree.c +++ b/Modules/elementtree.c @@ -1390,15 +1390,17 @@ element_ass_subscr(PyObject* self, PyOb if (step != 1 && newlen != slicelen) {

#if (PY_VERSION_HEX < 0x02050000) "attempt to assign sequence of size %d " "to extended slice of size %d",

#else "attempt to assign sequence of size %zd " "to extended slice of size %zd",

#endif

@@ -1407,9 +1409,7 @@ element_ass_subscr(PyObject* self_, PyOb /* Resize before creating the recycle bin, to prevent refleaks. */ if (newlen > slicelen) { if (element_resize(self, newlen - slicelen) < 0) {

@@ -1420,9 +1420,7 @@ element_ass_subscr(PyObject* self_, PyOb we're done modifying the element */ recycle = PyList_New(slicelen); if (!recycle) {

@@ -1450,9 +1448,7 @@ element_ass_subscr(PyObject* self_, PyOb self->extra->length += newlen - slicelen;

/* discard the recycle bin, and everything in it */ Py_XDECREF(recycle);