* fix #15941

* add testcase

* update
This commit is contained in:
flywind 2020-11-13 15:11:00 +08:00 • committed by GitHub
commit 492e9afa4c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
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)