From 2039753a9ab9d41375ba17877e231e8d53e17749 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Sun, 12 Sep 2010 02:11:45 +0000 Subject: [PATCH] Issue #9825: Remove __del__() from OrderedDict. --- Lib/collections.py | 3 --- Misc/NEWS | 7 +++++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Lib/collections.py b/Lib/collections.py index 10c8903697c..b0c67a1825c 100644 --- a/Lib/collections.py +++ b/Lib/collections.py @@ -173,9 +173,6 @@ class OrderedDict(dict, MutableMapping): all(_imap(_eq, self.iteritems(), other.iteritems())) return dict.__eq__(self, other) - def __del__(self): - self.clear() # eliminate cyclical references - ################################################################################ ### namedtuple diff --git a/Misc/NEWS b/Misc/NEWS index b65e8609324..a31d95aee81 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -43,6 +43,13 @@ Core and Builtins Library ------- +- Issue #9825: removed __del__ from the definition of collections.OrderedDict. + This prevents user-created self-referencing ordered dictionaries from + becoming permanently uncollectable GC garbage. The downside is that + removing __del__ means that the internal doubly-linked list has to wait for + GC collection rather than freeing memory immediately when the refcnt drops + to zero. + - Issue #9816: random.Random.jumpahead(n) did not produce a sufficiently different internal state for small values of n. Fixed by salting the value.