diff options
author | Jeremy Hylton <jeremy@alum.mit.edu> | 2001-03-01 00:42:55 (GMT) |
---|---|---|
committer | Jeremy Hylton <jeremy@alum.mit.edu> | 2001-03-01 00:42:55 (GMT) |
commit | 5125773ff133bfddbea6354c688b084bbf5d7e79 (patch) | |
tree | 8babadff14b11d7544d3c12eee92b58dfeaee67d /Python/compile.c | |
parent | cd81ea1708c0a3ac846e1e6f07c38d8d0b0efc22 (diff) | |
download | cpython-5125773ff133bfddbea6354c688b084bbf5d7e79.zip cpython-5125773ff133bfddbea6354c688b084bbf5d7e79.tar.gz cpython-5125773ff133bfddbea6354c688b084bbf5d7e79.tar.bz2 |
Don't add global names to st->st_global if we're already iterating
over the elements of st->st_global!
Diffstat (limited to 'Python/compile.c')
-rw-r--r-- | Python/compile.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/Python/compile.c b/Python/compile.c index 0be168c..bd6a679 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -3975,10 +3975,16 @@ get_ref_type(struct compiling *c, char *name) { char buf[350]; sprintf(buf, - "unknown scope for %.100s in %.100s(%s) in %s", + "unknown scope for %.100s in %.100s(%s) " + "in %s\nsymbols: %s\nlocals: %s\nglobals: %s\n", name, c->c_name, PyObject_REPR(c->c_symtable->st_cur->ste_id), - c->c_filename); + c->c_filename, + PyObject_REPR(c->c_symtable->st_cur->ste_symbols), + PyObject_REPR(c->c_locals), + PyObject_REPR(c->c_globals) + ); + Py_FatalError(buf); } return -1; /* can't get here */ @@ -4330,10 +4336,13 @@ symtable_load_symbols(struct compiling *c) if (PyDict_SetItem(c->c_globals, name, implicit) < 0) goto fail; - v = PyInt_FromLong(flags); - if (PyDict_SetItem(st->st_global, name, v)) - goto fail; - Py_DECREF(v); + if (st->st_nscopes != 1) { + v = PyInt_FromLong(flags); + if (PyDict_SetItem(st->st_global, + name, v)) + goto fail; + Py_DECREF(v); + } } } } |