summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2011-03-15 16:42:00 +0000
committerPhilipp Haller <hallerp@gmail.com>2011-03-15 16:42:00 +0000
commit9c5dfa18ed809e0cca090ecb7a1a8f0e3301c053 (patch)
tree9f1e522bd729e2714f8f3e1b74b947748db697c2 /src
parente23435247ba5b1f0073505d90cfd031090c5c565 (diff)
downloadscala-9c5dfa18ed809e0cca090ecb7a1a8f0e3301c053.tar.gz
scala-9c5dfa18ed809e0cca090ecb7a1a8f0e3301c053.tar.bz2
scala-9c5dfa18ed809e0cca090ecb7a1a8f0e3301c053.zip
Closes #3838. Review by prokopec.
Diffstat (limited to 'src')
-rw-r--r--src/actors/scala/actors/Actor.scala27
1 files changed, 15 insertions, 12 deletions
diff --git a/src/actors/scala/actors/Actor.scala b/src/actors/scala/actors/Actor.scala
index 98f5d2287f..059ab3abf7 100644
--- a/src/actors/scala/actors/Actor.scala
+++ b/src/actors/scala/actors/Actor.scala
@@ -589,18 +589,21 @@ trait Actor extends AbstractActor with ReplyReactor with ActorCanReply with Inpu
done = true
receiveTimeout
} else {
- waitingFor = f
- received = None
- isSuspended = true
- val thisActor = this
- onTimeout = Some(new TimerTask {
- def run() { thisActor.send(TIMEOUT, thisActor) }
- })
- Actor.timer.schedule(onTimeout.get, msec)
- scheduler.managedBlock(blocker)
- drainSendBuffer(mailbox)
- // keep going
- () => {}
+ if (onTimeout.isEmpty) {
+ waitingFor = f
+ received = None
+ isSuspended = true
+ val thisActor = this
+ onTimeout = Some(new TimerTask {
+ def run() { thisActor.send(TIMEOUT, thisActor) }
+ })
+ Actor.timer.schedule(onTimeout.get, msec)
+ scheduler.managedBlock(blocker)
+ drainSendBuffer(mailbox)
+ // keep going
+ () => {}
+ } else
+ sys.error("unhandled timeout")
}
}
todo()