From 5125773ff133bfddbea6354c688b084bbf5d7e79 Mon Sep 17 00:00:00 2001 From: Jeremy Hylton Date: Thu, 1 Mar 2001 00:42:55 +0000 Subject: [PATCH] Don't add global names to st->st_global if we're already iterating over the elements of st->st_global! --- Python/compile.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/Python/compile.c b/Python/compile.c index 0be168c2c63..bd6a679658d 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); + } } } }