Skip to content

Commit 5de65b8

Browse files
committed
Fix bug with setting size on new item
1 parent e25fecd commit 5de65b8

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

Diff for: lru.go

+14-5
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,7 @@ func (l *LRU) Set(key interface{}, value interface{}) error {
4646
return errors.New("Cannot store item that is larger than the cache capacity")
4747
}
4848

49-
newSize := l.size + entrySize
50-
if newSize > l.convenienceCap {
51-
l.removeLastElement()
52-
}
49+
newSize := l.setSize(entrySize)
5350

5451
_, ok := l.items[key]
5552
if !ok {
@@ -59,14 +56,26 @@ func (l *LRU) Set(key interface{}, value interface{}) error {
5956
size: entrySize,
6057
}
6158
listEntry := l.used.PushFront(entry)
62-
l.size += newSize
59+
l.size = newSize
6360
l.items[key] = listEntry
6461
}
6562

6663
return nil
6764

6865
}
6966

67+
func (l *LRU) setSize(entrySize uintptr) uintptr {
68+
69+
newSize := l.size + entrySize
70+
if newSize <= l.convenienceCap {
71+
return newSize
72+
}
73+
74+
l.removeLastElement()
75+
return l.setSize(entrySize)
76+
77+
}
78+
7079
func (l *LRU) removeLastElement() {
7180

7281
lastElement := l.used.Back()

0 commit comments

Comments
 (0)