]> granicus.if.org Git - python/commitdiff
Fix SF #745055, Memory leak in _tkinter.c/Tkapp_SplitList()
authorNeal Norwitz <nnorwitz@gmail.com>
Thu, 29 May 2003 00:17:03 +0000 (00:17 +0000)
committerNeal Norwitz <nnorwitz@gmail.com>
Thu, 29 May 2003 00:17:03 +0000 (00:17 +0000)
Also fix a memory leak in Tkapp_Split.

This needs to be backported.  I'll leave it up to Barry whether this
is for 2.2.3 or 2.2.4.

Modules/_tkinter.c

index fbc6ec10c9b69d05f1a0e3cde460225c2a1c0eb0..5851372468a80903a0dc5409ee38ccb30aba0d04 100644 (file)
@@ -1884,11 +1884,14 @@ 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]);
@@ -1901,12 +1904,14 @@ 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 (PyTuple_Size(args) == 1) {
@@ -1918,7 +1923,9 @@ Tkapp_Split(PyObject *self, PyObject *args)
        }
        if (!PyArg_ParseTuple(args, "et:split", "utf-8", &list))
                return NULL;
-       return Split(list);
+       v = Split(list);
+       PyMem_Free(list);
+       return v;
 }
 
 static PyObject *