Kaydet (Commit) 86424e33 authored tarafından Jeremy Hylton's avatar Jeremy Hylton

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.
üst 22a51efc
...@@ -5464,7 +5464,7 @@ symtable_assign(struct symtable *st, node *n, int def_flag) ...@@ -5464,7 +5464,7 @@ symtable_assign(struct symtable *st, node *n, int def_flag)
PyErr_SetString(PyExc_SyntaxError, PyErr_SetString(PyExc_SyntaxError,
ASSIGN_DEBUG); ASSIGN_DEBUG);
PyErr_SyntaxLocation(st->st_filename, PyErr_SyntaxLocation(st->st_filename,
st->st_cur->ste_opt_lineno); n->n_lineno);
st->st_errors++; st->st_errors++;
} }
symtable_add_def(st, STR(tmp), DEF_LOCAL | def_flag); symtable_add_def(st, STR(tmp), DEF_LOCAL | def_flag);
......
...@@ -45,6 +45,7 @@ PySymtableEntry_New(struct symtable *st, char *name, int type, int lineno) ...@@ -45,6 +45,7 @@ PySymtableEntry_New(struct symtable *st, char *name, int type, int lineno)
ste->ste_children = v; ste->ste_children = v;
ste->ste_optimized = 0; ste->ste_optimized = 0;
ste->ste_opt_lineno = 0;
ste->ste_lineno = lineno; ste->ste_lineno = lineno;
switch (type) { switch (type) {
case funcdef: case funcdef:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment