From: Neal Norwitz Date: Thu, 29 May 2003 18:58:23 +0000 (+0000) Subject: Backport 1.160: X-Git-Tag: v2.2.3~12 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a4ebef57f0eb91cf474cbdb707dda420e8262569;p=thirdparty%2FPython%2Fcpython.git Backport 1.160: Fix SF #745055, Memory leak in _tkinter.c/Tkapp_SplitList() Also fix a memory leak in Tkapp_Split. --- diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index 48097171efe6..30b013ca00d5 100644 --- a/Modules/_tkinter.c +++ b/Modules/_tkinter.c @@ -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 *