diff options
author | Matthew Baulch <baulch.matt@gmail.com> | 2016-07-11 15:10:54 +1000 |
---|---|---|
committer | Matthew Baulch <baulch.matt@gmail.com> | 2016-07-11 15:10:54 +1000 |
commit | 90a5edfa6dc6ac781ddacbba07c8e10bd9aee871 (patch) | |
tree | 88eb0ebb25265ac7a8cc5f12b15b3768451a24a6 /lib | |
parent | d7e172a6bc351ed926f93b77a14fc5cddbce3293 (diff) | |
download | Nim-90a5edfa6dc6ac781ddacbba07c8e10bd9aee871.tar.gz |
Fix #4422: Reset queue element on pop. Prevent NimVM confusion. Help GC.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pure/collections/queues.nim | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/pure/collections/queues.nim b/lib/pure/collections/queues.nim index 911816518..399e4d413 100644 --- a/lib/pure/collections/queues.nim +++ b/lib/pure/collections/queues.nim @@ -152,11 +152,13 @@ proc add*[T](q: var Queue[T], item: T) = q.data[q.wr] = item q.wr = (q.wr + 1) and q.mask +proc default[T](t: typedesc[T]): T {.inline.} = discard proc pop*[T](q: var Queue[T]): T {.inline, discardable.} = ## Remove and returns the first (oldest) element of the queue `q`. emptyCheck(q) dec q.count result = q.data[q.rd] + q.data[q.rd] = default(type(result)) q.rd = (q.rd + 1) and q.mask proc enqueue*[T](q: var Queue[T], item: T) = |