From: Guido van Rossum Date: Wed, 21 Mar 2007 21:26:58 +0000 (+0000) Subject: Fix refleak in compiler. X-Git-Tag: v3.0a1~1103 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3a38362592ee423852d1b32a32d65520bc003ffc;p=python Fix refleak in compiler. (A symbol table entry was leaked every time a class was compiled.) --- diff --git a/Python/compile.c b/Python/compile.c index 4c22441026..a47c8e6476 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 */