diff options
author | Jeremy Hylton <jeremy@alum.mit.edu> | 2001-12-04 02:41:46 (GMT) |
---|---|---|
committer | Jeremy Hylton <jeremy@alum.mit.edu> | 2001-12-04 02:41:46 (GMT) |
commit | 86424e333f1736591114da975c8d2926ba6f51f5 (patch) | |
tree | 6bc48e16d500640a0f448eac30521a3c24337159 | |
parent | 22a51efc1cb9b3d5c945bf90fd8906306c367604 (diff) | |
download | cpython-86424e333f1736591114da975c8d2926ba6f51f5.zip cpython-86424e333f1736591114da975c8d2926ba6f51f5.tar.gz cpython-86424e333f1736591114da975c8d2926ba6f51f5.tar.bz2 |
SF bug #488687 reported by Neal Norwitz
The error for assignment to __debug__ used ste->ste_opt_lineno instead
of n->n_lineno. The latter was at best incorrect; often the slot was
uninitialized. Two fixes here: Use the correct lineno for the error.
Initialize ste_opt_lineno in PySymtable_New(); while there are no
current cases where it is referenced unless it has already been
assigned to, there is no harm in initializing it.
-rw-r--r-- | Python/compile.c | 2 | ||||
-rw-r--r-- | Python/symtable.c | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/Python/compile.c b/Python/compile.c index 4b2cd07..d76769c 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -5464,7 +5464,7 @@ symtable_assign(struct symtable *st, node *n, int def_flag) PyErr_SetString(PyExc_SyntaxError, ASSIGN_DEBUG); PyErr_SyntaxLocation(st->st_filename, - st->st_cur->ste_opt_lineno); + n->n_lineno); st->st_errors++; } symtable_add_def(st, STR(tmp), DEF_LOCAL | def_flag); diff --git a/Python/symtable.c b/Python/symtable.c index 080bfd5..74d2b82 100644 --- a/Python/symtable.c +++ b/Python/symtable.c @@ -45,6 +45,7 @@ PySymtableEntry_New(struct symtable *st, char *name, int type, int lineno) ste->ste_children = v; ste->ste_optimized = 0; + ste->ste_opt_lineno = 0; ste->ste_lineno = lineno; switch (type) { case funcdef: |