summaryrefslogtreecommitdiff
path: root/Lib
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2016-12-31 12:01:59 -0700
committerRaymond Hettinger <python@rcn.com>2016-12-31 12:01:59 -0700
commit489e44b864d4030577299954377b35bd75140503 (patch)
tree9921a42422a0408074bc130ae092d3e98119835c /Lib
parentad26abba7cb612e4ff88b6d5cc02eb5249a7e0a7 (diff)
downloadcpython-489e44b864d4030577299954377b35bd75140503.tar.gz
Issue #29119: Fix weakref in OrderedDict.move_to_end(). Work by Andra Bogildea.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/collections/__init__.py7
1 files changed, 5 insertions, 2 deletions
diff --git a/Lib/collections/__init__.py b/Lib/collections/__init__.py
index ebe8ee7a83..bea811db7f 100644
--- a/Lib/collections/__init__.py
+++ b/Lib/collections/__init__.py
@@ -189,6 +189,7 @@ class OrderedDict(dict):
link = self.__map[key]
link_prev = link.prev
link_next = link.next
+ soft_link = link_next.prev
link_prev.next = link_next
link_next.prev = link_prev
root = self.__root
@@ -196,12 +197,14 @@ class OrderedDict(dict):
last = root.prev
link.prev = last
link.next = root
- last.next = root.prev = link
+ root.prev = soft_link
+ last.next = link
else:
first = root.next
link.prev = root
link.next = first
- root.next = first.prev = link
+ first.prev = soft_link
+ root.next = link
def __sizeof__(self):
sizeof = _sys.getsizeof