summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/orm/identity.py
diff options
context:
space:
mode:
authorJason Kirtland <jek@discorporate.us>2009-07-16 23:24:30 +0000
committerJason Kirtland <jek@discorporate.us>2009-07-16 23:24:30 +0000
commitf843442d97b801e1f57dc21aa0e25a30f4986018 (patch)
treeca83be99f627c461dbfff42c2d9dc789fc1f47f8 /lib/sqlalchemy/orm/identity.py
parentf5b055fabb639c00beff1f00a458bc851a8704d9 (diff)
downloadsqlalchemy-f843442d97b801e1f57dc21aa0e25a30f4986018.tar.gz
Guard against a gc hitting during the sweep for dirty objects.
Diffstat (limited to 'lib/sqlalchemy/orm/identity.py')
-rw-r--r--lib/sqlalchemy/orm/identity.py9
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/sqlalchemy/orm/identity.py b/lib/sqlalchemy/orm/identity.py
index dc219e1eb..50301a13c 100644
--- a/lib/sqlalchemy/orm/identity.py
+++ b/lib/sqlalchemy/orm/identity.py
@@ -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