summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Richter <srichter@cipherhealth.com>2013-02-21 01:18:58 -0500
committerStephan Richter <srichter@cipherhealth.com>2013-02-21 01:18:58 -0500
commit4c51651d047cb044c877e878e49bbc8595758c75 (patch)
tree4a2c676311c842e47c83fdf5ab0e99744bebc1f8
parentbb9e803534e35b2ffd6b3cbae7b033fb10356fec (diff)
downloadzope-interface-4c51651d047cb044c877e878e49bbc8595758c75.tar.gz
- Fixed a bug that was revealed by porting zope.traversing. During a loop, the
loop body modified a weakref dict causing a ``RuntimeError`` error
-rw-r--r--CHANGES.rst3
-rw-r--r--src/zope/interface/interface.py2
2 files changed, 3 insertions, 2 deletions
diff --git a/CHANGES.rst b/CHANGES.rst
index c1e2647..28ab4dc 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -4,7 +4,8 @@
4.0.4 (unreleased)
------------------
-- TBD
+- Fixed a bug that was revealed by porting zope.traversing. During a loop, the
+ loop body modified a weakref dict causing a ``RuntimeError`` error.
4.0.3 (2012-12-31)
------------------
diff --git a/src/zope/interface/interface.py b/src/zope/interface/interface.py
index 46d3f10..b04108f 100644
--- a/src/zope/interface/interface.py
+++ b/src/zope/interface/interface.py
@@ -248,7 +248,7 @@ class Specification(SpecificationBase):
implied[ancestor] = ()
# Now, advise our dependents of change:
- for dependent in self.dependents.keys():
+ for dependent in tuple(self.dependents.keys()):
dependent.changed(originally_changed)