[Python-checkins] CVS: python/dist/src/Python compile.c,2.143,2.144

Guido van Rossum python-dev@python.org
2000年11月27日 14:22:39 -0800


Update of /cvsroot/python/python/dist/src/Python
In directory slayer.i.sourceforge.net:/tmp/cvs-serv17324
Modified Files:
	compile.c 
Log Message:
Plug a memory leak in com_import_stmt(): the tuple created to hold the
"..." in "from M import ..." was never DECREFed. Leak reported by
James Slaughter and nailed by Barry, who also provided an earlier
version of this patch.
Index: compile.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/compile.c,v
retrieving revision 2.143
retrieving revision 2.144
diff -C2 -r2.143 -r2.144
*** compile.c	2000年11月14日 20:44:53	2.143
--- compile.c	2000年11月27日 22:22:36	2.144
***************
*** 2326,2334 ****
 {
 	int i;
- 	PyObject *tup;
 	REQ(n, import_stmt);
 	/* 'import' dotted_name (',' dotted_name)* |
 	 'from' dotted_name 'import' ('*' | NAME (',' NAME)*) */
 	if (STR(CHILD(n, 0))[0] == 'f') {
 		/* 'from' dotted_name 'import' ... */
 		REQ(CHILD(n, 1), dotted_name);
--- 2326,2334 ----
 {
 	int i;
 	REQ(n, import_stmt);
 	/* 'import' dotted_name (',' dotted_name)* |
 	 'from' dotted_name 'import' ('*' | NAME (',' NAME)*) */
 	if (STR(CHILD(n, 0))[0] == 'f') {
+ 		PyObject *tup;
 		/* 'from' dotted_name 'import' ... */
 		REQ(CHILD(n, 1), dotted_name);
***************
*** 2345,2348 ****
--- 2345,2349 ----
 		}
 		com_addoparg(c, LOAD_CONST, com_addconst(c, tup));
+ 		Py_DECREF(tup);
 		com_push(c, 1);
 		com_addopname(c, IMPORT_NAME, CHILD(n, 1));

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