]> granicus.if.org Git - python/commitdiff
Don't add global names to st->st_global if we're already iterating
authorJeremy Hylton <jeremy@alum.mit.edu>
Thu, 1 Mar 2001 00:42:55 +0000 (00:42 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Thu, 1 Mar 2001 00:42:55 +0000 (00:42 +0000)
over the elements of st->st_global!

Python/compile.c

index 0be168c2c639b39722bba9481f70dd5485ebb6c0..bd6a679658d18dbe42aae8ddc6822ee09e6cb3c4 100644 (file)
@@ -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);
+                               }
                        }
                }
        }