From 04fb01d1315c39cc316f1e16715110a7f3c116cb Mon Sep 17 00:00:00 2001 From: Philipp Haller Date: Tue, 3 Nov 2009 13:05:20 +0000 Subject: Fix and test for #2530. --- src/actors/scala/actors/Future.scala | 3 ++- src/actors/scala/actors/Reactor.scala | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/actors/scala/actors/Future.scala b/src/actors/scala/actors/Future.scala index e26b0b02df..38b268d795 100644 --- a/src/actors/scala/actors/Future.scala +++ b/src/actors/scala/actors/Future.scala @@ -127,7 +127,8 @@ object Futures { Actor.receive(reaction) } - awaitWith(partFuns) + if (partFuns.length > 0) + awaitWith(partFuns) var results: List[Option[Any]] = Nil val size = resultsMap.size diff --git a/src/actors/scala/actors/Reactor.scala b/src/actors/scala/actors/Reactor.scala index 7fda8678c1..1015b2eb15 100644 --- a/src/actors/scala/actors/Reactor.scala +++ b/src/actors/scala/actors/Reactor.scala @@ -34,6 +34,7 @@ trait Reactor extends OutputChannel[Any] { /* The actor's mailbox. */ private[actors] val mailbox = new MessageQueue("Reactor") + // guarded by this private[actors] val sendBuffer = new Queue[(Any, OutputChannel[Any])] /* If the actor waits in a react, continuation holds the @@ -121,6 +122,7 @@ trait Reactor extends OutputChannel[Any] { def receiver: Actor = this.asInstanceOf[Actor] + // guarded by this private[actors] def drainSendBuffer(mbox: MessageQueue) { while (!sendBuffer.isEmpty) { val item = sendBuffer.dequeue() -- cgit v1.2.3