]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Backport 1.160:
authorNeal Norwitz <nnorwitz@gmail.com>
Thu, 29 May 2003 18:58:23 +0000 (18:58 +0000)
committerNeal Norwitz <nnorwitz@gmail.com>
Thu, 29 May 2003 18:58:23 +0000 (18:58 +0000)
Fix SF #745055, Memory leak in _tkinter.c/Tkapp_SplitList()

Also fix a memory leak in Tkapp_Split.

Modules/_tkinter.c

index 48097171efe6889212c10f42857597330828194e..30b013ca00d57a9f0465255cec9ff271824aa743 100644 (file)
@@ -1194,12 +1194,15 @@ Tkapp_SplitList(PyObject *self, PyObject *args)
        if (!PyArg_ParseTuple(args, "et:splitlist", "utf-8", &list))
                return NULL;
 
-       if (Tcl_SplitList(Tkapp_Interp(self), list, &argc, &argv) == TCL_ERROR)
+       if (Tcl_SplitList(Tkapp_Interp(self), list, 
+                         &argc, &argv) == TCL_ERROR)  {
+               PyMem_Free(list);
                return Tkinter_Error(self);
+       }
 
        if (!(v = PyTuple_New(argc)))
-               return NULL;
-       
+               goto finally;
+
        for (i = 0; i < argc; i++) {
                PyObject *s = PyString_FromString(argv[i]);
                if (!s || PyTuple_SetItem(v, i, s)) {
@@ -1211,17 +1214,21 @@ Tkapp_SplitList(PyObject *self, PyObject *args)
 
   finally:
        ckfree(FREECAST argv);
+       PyMem_Free(list);
        return v;
 }
 
 static PyObject *
 Tkapp_Split(PyObject *self, PyObject *args)
 {
+       PyObject *v;
        char *list;
 
        if (!PyArg_ParseTuple(args, "et:split", "utf-8", &list))
                return NULL;
-       return Split(list);
+       v = Split(list);
+       PyMem_Free(list);
+       return v;
 }
 
 static PyObject *