diff options
author | Philipp Haller <hallerp@gmail.com> | 2009-10-25 08:31:33 +0000 |
---|---|---|
committer | Philipp Haller <hallerp@gmail.com> | 2009-10-25 08:31:33 +0000 |
commit | a129d09baec62024b1c040ddd52405d05fea3933 (patch) | |
tree | 67ce3307f7494df68ebf430d08185404d46f572a /src | |
parent | 728775440ccd67928c25914a1e003ff9765ad80b (diff) | |
download | scala-a129d09baec62024b1c040ddd52405d05fea3933.tar.gz scala-a129d09baec62024b1c040ddd52405d05fea3933.tar.bz2 scala-a129d09baec62024b1c040ddd52405d05fea3933.zip |
Fix and test for #2515.
Diffstat (limited to 'src')
-rw-r--r-- | src/actors/scala/actors/Future.scala | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/actors/scala/actors/Future.scala b/src/actors/scala/actors/Future.scala index ec07f2a1a8..e26b0b02df 100644 --- a/src/actors/scala/actors/Future.scala +++ b/src/actors/scala/actors/Future.scala @@ -79,9 +79,10 @@ object Futures { */ def awaitAll(timeout: Long, fts: Future[Any]*): List[Option[Any]] = { val thisActor = Actor.self - Actor.timer.schedule(new java.util.TimerTask { + val timerTask = new java.util.TimerTask { def run() { thisActor ! TIMEOUT } - }, timeout) + } + Actor.timer.schedule(timerTask, timeout) var resultsMap: collection.mutable.Map[Int, Option[Any]] = new collection.mutable.HashMap[Int, Option[Any]] @@ -133,6 +134,10 @@ object Futures { for (i <- 0 until size) { results = resultsMap(size - i - 1) :: results } + + // cancel scheduled timer task + timerTask.cancel() + results } |