From 15c66a06f96d4c801fc3ccb3be24536934805cce Mon Sep 17 00:00:00 2001 From: narimiran Date: Wed, 7 Nov 2018 15:22:02 +0100 Subject: [PATCH] keep the order of the callbacks --- lib/pure/asyncfutures.nim | 16 +++++++++++----- tests/async/tcallbacks.nim | 5 +++-- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/lib/pure/asyncfutures.nim b/lib/pure/asyncfutures.nim index 965e7005516da..aa8314632eccd 100644 --- a/lib/pure/asyncfutures.nim +++ b/lib/pure/asyncfutures.nim @@ -123,11 +123,17 @@ proc add(callbacks: var CallbackList, function: CallbackFunc) = callbacks.function = function assert callbacks.next == nil else: - let newNext = new(ref CallbackList) - newNext.function = callbacks.function - newNext.next = callbacks.next - callbacks.next = newNext - callbacks.function = function + let newCallback = new(ref CallbackList) + newCallback.function = function + newCallback.next = nil + + if callbacks.next == nil: + callbacks.next = newCallback + else: + var last = callbacks.next + while last.next != nil: + last = last.next + last.next = newCallback proc complete*[T](future: Future[T], val: T) = ## Completes ``future`` with value ``val``. diff --git a/tests/async/tcallbacks.nim b/tests/async/tcallbacks.nim index 8c08032cd8491..bd82d58248597 100644 --- a/tests/async/tcallbacks.nim +++ b/tests/async/tcallbacks.nim @@ -1,8 +1,9 @@ discard """ exitcode: 0 - output: '''3 -2 + output: ''' 1 +2 +3 5 ''' """