[pypy-svn] r49215 - pypy/dist/pypy/annotation

arigo at codespeak.net arigo at codespeak.net
Thu Nov 29 19:51:40 CET 2007


Author: arigo
Date: Thu Nov 29 19:51:37 2007
New Revision: 49215

Modified:
   pypy/dist/pypy/annotation/bookkeeper.py
Log:
Don't catch and discard a RuntimeError - it could mask a real problem
like a stack overflow.


Modified: pypy/dist/pypy/annotation/bookkeeper.py
==============================================================================
--- pypy/dist/pypy/annotation/bookkeeper.py	(original)
+++ pypy/dist/pypy/annotation/bookkeeper.py	Thu Nov 29 19:51:37 2007
@@ -365,16 +365,15 @@
                         s_hashfn = self.immutablevalue(x.key_hash)
                         result.dictdef.dictkey.update_rdict_annotations(s_eqfn,
                                                                         s_hashfn)
-                    done = False
-                    while not done:
-                        try:
-                            for ek, ev in x.iteritems():
-                                result.dictdef.generalize_key(self.immutablevalue(ek))
-                                result.dictdef.generalize_value(self.immutablevalue(ev))
-                        except RuntimeError, r:
-                            pass
-                        else:
-                            done = True
+                    seen_elements = 0
+                    while seen_elements != len(x):
+                        items = x.items()
+                        for ek, ev in items:
+                            result.dictdef.generalize_key(self.immutablevalue(ek))
+                            result.dictdef.generalize_value(self.immutablevalue(ev))
+                        seen_elements = len(items)
+                        # if the dictionary grew during the iteration,
+                        # start over again
                     result.const_box = key
                     return result
             else:


More information about the pypy-svn mailing list