]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Fix the final two issues in Armin Rigo's SF bug #488477: apply_slice()
authorGuido van Rossum <guido@python.org>
Mon, 3 Dec 2001 19:45:06 +0000 (19:45 +0000)
committerGuido van Rossum <guido@python.org>
Mon, 3 Dec 2001 19:45:06 +0000 (19:45 +0000)
and assign_slice() weren't properly DECREF'ing the temporary slice
object they created.  (Shame on me. :-)

Python/ceval.c

index b41ef5a71e56f0aba7583dada534f53b47e6d438..535851775f48d892c9a8aaa8100278204c0b7283 100644 (file)
@@ -3398,8 +3398,11 @@ apply_slice(PyObject *u, PyObject *v, PyObject *w) /* return u[v:w] */
        }
        else {
                PyObject *slice = PySlice_New(v, w, NULL);
-               if (slice != NULL)
-                       return PyObject_GetItem(u, slice);
+               if (slice != NULL) {
+                       PyObject *res = PyObject_GetItem(u, slice);
+                       Py_DECREF(slice);
+                       return res;
+               }
                else
                        return NULL;
        }
@@ -3426,10 +3429,13 @@ assign_slice(PyObject *u, PyObject *v, PyObject *w, PyObject *x)
        else {
                PyObject *slice = PySlice_New(v, w, NULL);
                if (slice != NULL) {
+                       int res;
                        if (x != NULL)
-                               return PyObject_SetItem(u, slice, x);
+                               res = PyObject_SetItem(u, slice, x);
                        else
-                               return PyObject_DelItem(u, slice);
+                               res = PyObject_DelItem(u, slice);
+                       Py_DECREF(slice);
+                       return res;
                }
                else
                        return -1;