From a4ebef57f0eb91cf474cbdb707dda420e8262569 Mon Sep 17 00:00:00 2001 From: Neal Norwitz Date: Thu, 29 May 2003 18:58:23 +0000 Subject: [PATCH] Backport 1.160: Fix SF #745055, Memory leak in _tkinter.c/Tkapp_SplitList() Also fix a memory leak in Tkapp_Split. --- Modules/_tkinter.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) 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 * -- 2.47.3