0005414: Crash in SourceView. LRU clear does not reset first and last pointers
svn: r18579
This commit is contained in:
parent
1ee2a4ec30
commit
992779a534
24
src/Lru.py
24
src/Lru.py
@ -155,7 +155,25 @@ class LRU(object):
|
|||||||
"""
|
"""
|
||||||
Empties LRU
|
Empties LRU
|
||||||
"""
|
"""
|
||||||
for obj, node in self.data.iteritems():
|
# Step through the doubly linked list, setting prev and next to None.
|
||||||
node.prev = None
|
# This ensures that each node is unreachable and therefore eligible for
|
||||||
node.next = None
|
# garbage collection. "del" is also called for each node, but it is
|
||||||
|
# unclear whether this actually has any effect, of just removes the
|
||||||
|
# binding to nobj
|
||||||
|
nobj = self.first
|
||||||
|
# The references first and last are removed so that the nodes are not
|
||||||
|
# reachable from these
|
||||||
|
self.first = None
|
||||||
|
self.last = None
|
||||||
|
# The references from self.data are removed
|
||||||
self.data.clear()
|
self.data.clear()
|
||||||
|
while nobj is not None and nobj.next is not None:
|
||||||
|
# each node except the last is processed
|
||||||
|
nobj.next.prev = None
|
||||||
|
nextobj = nobj.next
|
||||||
|
nobj.next = None
|
||||||
|
del nobj
|
||||||
|
nobj = nextobj
|
||||||
|
if nobj is not None:
|
||||||
|
# The last node is processed
|
||||||
|
del nobj
|
||||||
|
Loading…
Reference in New Issue
Block a user