fixes #21278; deques.shrink off by one bug (#21284)

fixes #21278; deques.shrink off ny one bug

(cherry picked from commit b82b5d44af)
This commit is contained in:
ringabout
2023-01-20 18:43:45 +08:00
committed by narimiran
parent 0cdbf5e04e
commit 7a43d00a64
2 changed files with 7 additions and 1 deletions

View File

@@ -441,7 +441,7 @@ proc shrink*[T](deq: var Deque[T], fromFirst = 0, fromLast = 0) =
deq.head = (deq.head + 1) and deq.mask
for i in 0 ..< fromLast:
destroy(deq.data[deq.tail])
destroy(deq.data[(deq.tail - 1) and deq.mask])
deq.tail = (deq.tail - 1) and deq.mask
dec deq.count, fromFirst + fromLast

View File

@@ -183,6 +183,12 @@ proc main() =
clear(a)
doAssert len(a) == 0
block: # bug #21278
var a = [10, 20, 30, 40].toDeque
a.shrink(fromFirst = 0, fromLast = 1)
doAssert $a == "[10, 20, 30]"
static: main()
main()