Skip to content

Commit 51a9ada

Browse files
authored
fixes #25173; SinglyLinkedList.remove broken / AssertionDefect (#25175)
fixes #25173
1 parent 40fe59b commit 51a9ada

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

lib/pure/collections/lists.nim

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -712,6 +712,8 @@ proc remove*[T](L: var SinglyLinkedList[T], n: SinglyLinkedNode[T]): bool {.disc
712712
L.head = n.next
713713
if L.tail.next == n:
714714
L.tail.next = L.head # restore cycle
715+
if L.tail == n:
716+
L.tail = nil # reset tail if we removed the last node
715717
else:
716718
var prev {.cursor.} = L.head
717719
while prev.next != n and prev.next != nil:

tests/stdlib/tlists.nim

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,5 +273,17 @@ template main =
273273
list.add(n4)
274274
doAssert list.toSeq == @["sonic", "the", "hedgehog"]
275275

276+
277+
block:
278+
var list = initSinglyLinkedList[int]()
279+
280+
list.add(4)
281+
list.remove(list.head)
282+
283+
list.add(5)
284+
list.remove(list.head)
285+
286+
list.add(6)
287+
276288
static: main()
277289
main()

0 commit comments

Comments
 (0)