From 90a5edfa6dc6ac781ddacbba07c8e10bd9aee871 Mon Sep 17 00:00:00 2001 From: Matthew Baulch Date: Mon, 11 Jul 2016 15:10:54 +1000 Subject: Fix #4422: Reset queue element on pop. Prevent NimVM confusion. Help GC. --- lib/pure/collections/queues.nim | 2 ++ 1 file changed, 2 insertions(+) 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) = -- cgit 1.4.1-2-gfad0