![](https://secure.gravatar.com/avatar/183afb31d4891087da6e177634ef10f8.jpg?s=120&d=mm&r=g)
Update of /cvsroot/python/python/dist/src/Python In directory sc8-pr-cvs1:/tmp/cvs-serv25029/Python Modified Files: Tag: release22-maint compile.c Log Message: Backport fix for SF808594: leak on lambda with duplicate arguments. Index: compile.c =================================================================== RCS file: /cvsroot/python/python/dist/src/Python/compile.c,v retrieving revision 2.234.4.8 retrieving revision 2.234.4.9 diff -C2 -d -r2.234.4.8 -r2.234.4.9 *** compile.c 22 May 2003 16:43:03 -0000 2.234.4.8 --- compile.c 22 Sep 2003 04:42:17 -0000 2.234.4.9 *************** *** 4550,4553 **** --- 4550,4563 ---- static int + symtable_error(struct symtable *st, int lineno) + { + if (lineno == 0) + lineno = st->st_cur->ste_lineno; + PyErr_SyntaxLocation(st->st_filename, lineno); + st->st_errors++; + return -1; + } + + static int symtable_load_symbols(struct compiling *c) { *************** *** 4613,4619 **** PyErr_Format(PyExc_SyntaxError, LOCAL_GLOBAL, PyString_AS_STRING(name)); ! PyErr_SyntaxLocation(st->st_filename, ! ste->ste_lineno); ! st->st_errors++; goto fail; } --- 4623,4627 ---- PyErr_Format(PyExc_SyntaxError, LOCAL_GLOBAL, PyString_AS_STRING(name)); ! symtable_error(st, 0); goto fail; } *************** *** 4960,4966 **** PyErr_Format(PyExc_SyntaxError, DUPLICATE_ARGUMENT, PyString_AsString(name)); ! PyErr_SyntaxLocation(st->st_filename, ! st->st_cur->ste_lineno); ! return -1; } val |= flag; --- 4968,4972 ---- PyErr_Format(PyExc_SyntaxError, DUPLICATE_ARGUMENT, PyString_AsString(name)); ! return symtable_error(st, 0); } val |= flag; *************** *** 5359,5365 **** "name '%.400s' is local and global", name); ! PyErr_SyntaxLocation(st->st_filename, ! st->st_cur->ste_lineno); ! st->st_errors++; return; } --- 5365,5369 ---- "name '%.400s' is local and global", name); ! symtable_error(st, 0); return; } *************** *** 5421,5427 **** PyErr_SetString(PyExc_SyntaxError, LATE_FUTURE); ! PyErr_SyntaxLocation(st->st_filename, ! n->n_lineno); ! st->st_errors++; return; } --- 5425,5429 ---- PyErr_SetString(PyExc_SyntaxError, LATE_FUTURE); ! symtable_error(st, n->n_lineno); return; } *************** *** 5516,5522 **** PyErr_SetString(PyExc_SyntaxError, ASSIGN_DEBUG); ! PyErr_SyntaxLocation(st->st_filename, ! n->n_lineno); ! st->st_errors++; } symtable_add_def(st, STR(tmp), DEF_LOCAL | def_flag); --- 5518,5523 ---- PyErr_SetString(PyExc_SyntaxError, ASSIGN_DEBUG); ! symtable_error(st, n->n_lineno); ! return; } symtable_add_def(st, STR(tmp), DEF_LOCAL | def_flag);