From 5125773ff133bfddbea6354c688b084bbf5d7e79 Mon Sep 17 00:00:00 2001
From: Jeremy Hylton <jeremy@alum.mit.edu>
Date: Thu, 1 Mar 2001 00:42:55 +0000
Subject: 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 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);
+				}
 			}
 		}
 	}
-- 
cgit v0.12

