[Python-checkins] python/dist/src/Modules _tkinter.c,1.159,1.160

nnorwitz@users.sourceforge.net nnorwitz@users.sourceforge.net
2003年5月28日 17:17:06 -0700


Update of /cvsroot/python/python/dist/src/Modules
In directory sc8-pr-cvs1:/tmp/cvs-serv22503/Modules
Modified Files:
	_tkinter.c 
Log Message:
Fix SF #745055, Memory leak in _tkinter.c/Tkapp_SplitList()
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.
Index: _tkinter.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/_tkinter.c,v
retrieving revision 1.159
retrieving revision 1.160
diff -C2 -d -r1.159 -r1.160
*** _tkinter.c	19 May 2003 19:57:42 -0000	1.159
--- _tkinter.c	29 May 2003 00:17:03 -0000	1.160
***************
*** 1885,1893 ****
 		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++) {
--- 1885,1896 ----
 		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++) {
***************
*** 1902,1905 ****
--- 1905,1909 ----
 finally:
 	ckfree(FREECAST argv);
+ 	PyMem_Free(list);
 	return v;
 }
***************
*** 1908,1911 ****
--- 1912,1916 ----
 Tkapp_Split(PyObject *self, PyObject *args)
 {
+ 	PyObject *v;
 	char *list;
 
***************
*** 1919,1923 ****
 	if (!PyArg_ParseTuple(args, "et:split", "utf-8", &list))
 		return NULL;
! 	return Split(list);
 }
 
--- 1924,1930 ----
 	if (!PyArg_ParseTuple(args, "et:split", "utf-8", &list))
 		return NULL;
! 	v = Split(list);
! 	PyMem_Free(list);
! 	return v;
 }
 

AltStyle によって変換されたページ (->オリジナル) /