summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorJeremy Hylton <jeremy@alum.mit.edu>2001-03-01 00:42:55 (GMT)
committerJeremy Hylton <jeremy@alum.mit.edu>2001-03-01 00:42:55 (GMT)
commit5125773ff133bfddbea6354c688b084bbf5d7e79 (patch)
tree8babadff14b11d7544d3c12eee92b58dfeaee67d /Python
parentcd81ea1708c0a3ac846e1e6f07c38d8d0b0efc22 (diff)
downloadcpython-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')
-rw-r--r--Python/compile.c21
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);
+ }
}
}
}