summaryrefslogtreecommitdiffstats
path: root/Misc
diff options
context:
space:
mode:
authorTim Peters <tim.peters@gmail.com>2003-05-25 01:45:11 (GMT)
committerTim Peters <tim.peters@gmail.com>2003-05-25 01:45:11 (GMT)
commit886128f4f8b30b7e3623418eab063a3a8dd3495c (patch)
tree4f4e74b0d3fcd6251c52ca8419f0b1eff178ff22 /Misc
parent6f805942290b8d83f0e229de98c8d0d7a2a7c3e8 (diff)
downloadcpython-886128f4f8b30b7e3623418eab063a3a8dd3495c.zip
cpython-886128f4f8b30b7e3623418eab063a3a8dd3495c.tar.gz
cpython-886128f4f8b30b7e3623418eab063a3a8dd3495c.tar.bz2
SF 742860: WeakKeyDictionary __delitem__ uses iterkeys
Someone review this, please! Final releases are getting close, Fred (the weakref guy) won't be around until Tuesday, and the pre-patch code can indeed raise spurious RuntimeErrors in the presence of threads or mutating comparison functions. See the bug report for my confusions: I can't see any reason for why __delitem__ iterated over the keys. The new one-liner implementation is much faster, can't raise RuntimeError, and should be better-behaved in all respects wrt threads. New tests test_weak_keyed_bad_delitem and test_weak_keyed_cascading_deletes fail before this patch. Bugfix candidate for 2.2.3 too, if someone else agrees with this patch.
Diffstat (limited to 'Misc')
-rw-r--r--Misc/NEWS6
1 files changed, 6 insertions, 0 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index a63f022..bc15f42 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,12 @@ What's New in Python 2.3 beta 2?
Core and builtins
-----------------
+- SF bug 742860: WeakKeyDictionary __delitem__ uses iterkeys. This
+ wasn't as threadsafe as it should be, was very inefficient, and could
+ raise RuntimeError if another thread mutated the dict during
+ __delitem__, or if a comparison function mutated it. A new
+ implementation of WeakKeyDictionary.__delitem__ repairs all that.
+
- SF bug 705231: builtin pow() no longer lets the platform C pow()
raise -1.0 to integer powers, because (at least) glibc gets it wrong
in some cases. The result should be -1.0 if the power is odd and 1.0