]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Guard against a gc hitting during the sweep for dirty objects.
authorJason Kirtland <jek@discorporate.us>
Thu, 16 Jul 2009 23:24:30 +0000 (23:24 +0000)
committerJason Kirtland <jek@discorporate.us>
Thu, 16 Jul 2009 23:24:30 +0000 (23:24 +0000)
lib/sqlalchemy/orm/identity.py

index dc219e1eb897d405148b1e3f23030c7338803899..50301a13c3ba85a27fad3b70669b7ba43978d213 100644 (file)
@@ -43,17 +43,18 @@ class IdentityMap(dict):
         del state._instance_dict
         self._mutable_attrs.discard(state)
         self._modified.discard(state)
-    
+
     def _dirty_states(self):
-        return self._modified.union(s for s in self._mutable_attrs if s.modified)
-        
+        return self._modified.union(s for s in list(self._mutable_attrs)
+                                    if s.modified)
+
     def check_modified(self):
         """return True if any InstanceStates present have been marked as 'modified'."""
         
         if self._modified:
             return True
         else:
-            for state in self._mutable_attrs:
+            for state in list(self._mutable_attrs):
                 if state.modified:
                     return True
         return False