[Python-checkins] python/dist/src/Modules _tkinter.c,1.121.6.2,1.121.6.3

nnorwitz@users.sourceforge.net nnorwitz@users.sourceforge.net
Thu, 29 May 2003 11:58:25 -0700


Update of /cvsroot/python/python/dist/src/Modules
In directory sc8-pr-cvs1:/tmp/cvs-serv2938/Modules

Modified Files:
      Tag: release22-maint
	_tkinter.c 
Log Message:
Backport 1.160:
Fix SF #745055, Memory leak in _tkinter.c/Tkapp_SplitList()

Also fix a memory leak in Tkapp_Split.


Index: _tkinter.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/_tkinter.c,v
retrieving revision 1.121.6.2
retrieving revision 1.121.6.3
diff -C2 -d -r1.121.6.2 -r1.121.6.3
*** _tkinter.c	11 Feb 2003 23:19:35 -0000	1.121.6.2
--- _tkinter.c	29 May 2003 18:58:23 -0000	1.121.6.3
***************
*** 1195,1204 ****
  		return NULL;
  
! 	if (Tcl_SplitList(Tkapp_Interp(self), list, &argc, &argv) == TCL_ERROR)
  		return Tkinter_Error(self);
  
  	if (!(v = PyTuple_New(argc)))
! 		return NULL;
! 	
  	for (i = 0; i < argc; i++) {
  		PyObject *s = PyString_FromString(argv[i]);
--- 1195,1207 ----
  		return NULL;
  
! 	if (Tcl_SplitList(Tkapp_Interp(self), list, 
! 			  &argc, &argv) == TCL_ERROR)  {
! 		PyMem_Free(list);
  		return Tkinter_Error(self);
+ 	}
  
  	if (!(v = PyTuple_New(argc)))
! 		goto finally;
! 
  	for (i = 0; i < argc; i++) {
  		PyObject *s = PyString_FromString(argv[i]);
***************
*** 1212,1215 ****
--- 1215,1219 ----
    finally:
  	ckfree(FREECAST argv);
+ 	PyMem_Free(list);
  	return v;
  }
***************
*** 1218,1226 ****
  Tkapp_Split(PyObject *self, PyObject *args)
  {
  	char *list;
  
  	if (!PyArg_ParseTuple(args, "et:split", "utf-8", &list))
  		return NULL;
! 	return Split(list);
  }
  
--- 1222,1233 ----
  Tkapp_Split(PyObject *self, PyObject *args)
  {
+ 	PyObject *v;
  	char *list;
  
  	if (!PyArg_ParseTuple(args, "et:split", "utf-8", &list))
  		return NULL;
! 	v = Split(list);
! 	PyMem_Free(list);
! 	return v;
  }