* fix #15941

* add testcase

* update
This commit is contained in:
flywind
2020-11-13 15:11:00 +08:00
committed by GitHub
parent d0c4c738b9
commit 492e9afa4c
2 changed files with 24 additions and 4 deletions

View File

@@ -65,11 +65,14 @@ iterator items*[A](x: var SharedList[A]): A =
proc add*[A](x: var SharedList[A]; y: A) =
withLock(x):
var node: SharedListNode[A]
if x.tail == nil or x.tail.dataLen == ElemsPerNode:
node = cast[type node](allocShared0(sizeof(node[])))
node.next = x.tail
if x.tail == nil:
node = cast[typeof node](allocShared0(sizeof(node[])))
x.tail = node
x.head = node
elif x.tail.dataLen == ElemsPerNode:
node = cast[typeof node](allocShared0(sizeof(node[])))
x.tail.next = node
x.tail = node
if x.head == nil: x.head = node
else:
node = x.tail
node.d[node.dataLen] = y

View File

@@ -0,0 +1,17 @@
import sharedlist
var
list: SharedList[int]
count: int
init(list)
for i in 1 .. 250:
list.add i
for i in list:
inc count
doAssert count == 250
deinitSharedList(list)