Fix #19314 - fixing broken DoublyLinkedList after adding empty DoublyLinkedList (#19315) [backport]

* Update lists.nim

* Update tlists.nim
This commit is contained in:
rockcavera 2022-01-03 16:14:08 -03:00 • committed by GitHub
commit 526a32e169
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 6 deletions

View file

@ -675,12 +675,12 @@ proc addMoved*[T](a, b: var DoublyLinkedList[T]) {.since: (1, 5, 1).} =
assert s == [0, 1, 0, 1, 0, 1] assert s == [0, 1, 0, 1, 0, 1]
if b.head != nil: if b.head != nil:
b.head.prev = a.tail if a.head == nil:
if a.tail != nil: a.head = b.head
a.tail.next = b.head else:
a.tail = b.tail b.head.prev = a.tail
if a.head == nil: a.tail.next = b.head
a.head = b.head a.tail = b.tail
if a.addr != b.addr: if a.addr != b.addr:
b.head = nil b.head = nil
b.tail = nil b.tail = nil

View file

@ -245,6 +245,18 @@ template main =
doAssert a.toSeq == @[1] doAssert a.toSeq == @[1]
a.add(2) a.add(2)
doAssert a.toSeq == @[1, 2] doAssert a.toSeq == @[1, 2]
block issue19314: # add (appends a shallow copy)
var a: DoublyLinkedList[int]
var b: DoublyLinkedList[int]
doAssert a.toSeq == @[]
a.add(1)
doAssert a.toSeq == @[1]
a.add(b)
doAssert a.toSeq == @[1]
a.add(2)
doAssert a.toSeq == @[1, 2]
static: main() static: main()
main() main()