From 5a007a84fc8350a3a43ddc712c7a59a9ab2dce79 Mon Sep 17 00:00:00 2001 From: Konstantin Molchanov Date: Tue, 31 May 2016 14:56:45 +0400 Subject: Stdlib: asyncdispatch: `all` proc: Fix incorect counter value issue. --- lib/pure/asyncdispatch.nim | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/pure/asyncdispatch.nim b/lib/pure/asyncdispatch.nim index de86cd5ef..53c78d929 100644 --- a/lib/pure/asyncdispatch.nim +++ b/lib/pure/asyncdispatch.nim @@ -368,12 +368,15 @@ proc all*[A](futs: openarray[Future[A]]): Future[seq[A]] = completedFutures = 0 for i, fut in futs: - fut.callback = proc(f: Future[A]) = - retValues[i] = f.read() - inc(completedFutures) + proc setCallback(i: int) = + fut.callback = proc(f: Future[A]) = + retValues[i] = f.read() + inc(completedFutures) - if completedFutures == len(futs): - retFuture.complete(retValues) + if completedFutures == len(retValues): + retFuture.complete(retValues) + + setCallback(i) return retFuture -- cgit 1.4.1-2-gfad0