diff Python/compile.c @ 15438:433458651eb4 legacy-trunk

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.
author Guido van Rossum <guido@python.org>
date Mon, 27 Nov 2000 22:22:36 +0000
parents ddd903fb6a71
children 51811d78a9da
line wrap: on
line diff
--- a/Python/compile.c	Mon Nov 27 21:53:14 2000 +0000
+++ b/Python/compile.c	Mon Nov 27 22:22:36 2000 +0000
@@ -2325,11 +2325,11 @@
 com_import_stmt(struct compiling *c, node *n)
 {
 	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') {
+		PyObject *tup;
 		/* 'from' dotted_name 'import' ... */
 		REQ(CHILD(n, 1), dotted_name);
 		
@@ -2344,6 +2344,7 @@
 			}
 		}
 		com_addoparg(c, LOAD_CONST, com_addconst(c, tup));
+		Py_DECREF(tup);
 		com_push(c, 1);
 		com_addopname(c, IMPORT_NAME, CHILD(n, 1));
 		if (TYPE(CHILD(n, 3)) == STAR)