From 3a38362592ee423852d1b32a32d65520bc003ffc Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Wed, 21 Mar 2007 21:26:58 +0000 Subject: Fix refleak in compiler. (A symbol table entry was leaked every time a class was compiled.) --- Python/compile.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Python/compile.c b/Python/compile.c index 4c22441..a47c8e6 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -1519,6 +1519,7 @@ compiler_class(struct compiler *c, stmt_ty s) PyCodeObject *co; PyObject *str; PySTEntryObject *ste; + int err; /* initialize statics */ if (build_class == NULL) { @@ -1547,7 +1548,9 @@ compiler_class(struct compiler *c, stmt_ty s) if (ste == NULL) return 0; assert(PyList_Check(ste->ste_varnames)); - if (PyList_Append(ste->ste_varnames, locals) < 0) + err = PyList_Append(ste->ste_varnames, locals); + Py_DECREF(ste); + if (err < 0) return 0; /* 1. compile the class body into a code object */ -- cgit v0.12