summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2009-11-03 13:05:20 +0000
committerPhilipp Haller <hallerp@gmail.com>2009-11-03 13:05:20 +0000
commit04fb01d1315c39cc316f1e16715110a7f3c116cb (patch)
tree647071466243343c25d596cf3b3bcedbdab21697 /src
parent621da8e1ff8cebfada253e287b8f41bbd3eb8e23 (diff)
downloadscala-04fb01d1315c39cc316f1e16715110a7f3c116cb.tar.gz
scala-04fb01d1315c39cc316f1e16715110a7f3c116cb.tar.bz2
scala-04fb01d1315c39cc316f1e16715110a7f3c116cb.zip
Fix and test for #2530.
Diffstat (limited to 'src')
-rw-r--r--src/actors/scala/actors/Future.scala3
-rw-r--r--src/actors/scala/actors/Reactor.scala2
2 files changed, 4 insertions, 1 deletions
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()