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

fixes #21278; deques.shrink off ny one bug
This commit is contained in:
ringabout 2023-01-20 18:43:45 +08:00 • committed by GitHub
commit b82b5d44af
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 1 deletions

View file

@ -440,7 +440,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()