Mercurial > cpython-lru_cache-weakref
diff Python/compile.c @ 16878:1cf52536c381 legacy-trunk
Don't add global names to st->st_global if we're already iterating
over the elements of st->st_global!
| author | Jeremy Hylton <jeremy@alum.mit.edu> |
|---|---|
| date | Thu, 01 Mar 2001 00:42:55 +0000 |
| parents | 9d018a3d7946 |
| children | f27d3299df39 |
line wrap: on
line diff
--- a/Python/compile.c Thu Mar 01 00:36:53 2001 +0000 +++ b/Python/compile.c Thu Mar 01 00:42:55 2001 +0000 @@ -3975,10 +3975,16 @@ { 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 @@ 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); + } } } }
