summaryrefslogtreecommitdiff
path: root/src/actors
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2008-03-05 08:45:25 +0000
committerPhilipp Haller <hallerp@gmail.com>2008-03-05 08:45:25 +0000
commit84e704d8b97de2b3f799a2852a80ba4c3d3b15e8 (patch)
treefc56f949a919fc75962b247d965c6afb9d0a2bd7 /src/actors
parenta62078efe9d5fbda6151e8151a245528327c8250 (diff)
downloadscala-84e704d8b97de2b3f799a2852a80ba4c3d3b15e8.tar.gz
scala-84e704d8b97de2b3f799a2852a80ba4c3d3b15e8.tar.bz2
scala-84e704d8b97de2b3f799a2852a80ba4c3d3b15e8.zip
Fixed #585.
Diffstat (limited to 'src/actors')
-rw-r--r--src/actors/scala/actors/Actor.scala8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/actors/scala/actors/Actor.scala b/src/actors/scala/actors/Actor.scala
index 6f796d0dac..583a6bae2e 100644
--- a/src/actors/scala/actors/Actor.scala
+++ b/src/actors/scala/actors/Actor.scala
@@ -710,6 +710,7 @@ trait Actor extends OutputChannel[Any] {
* @return ...
*/
def link(to: Actor): Actor = {
+ assert(Actor.self == this, "link called on actor different from self")
links = to :: links
to.linkTo(this)
to
@@ -727,19 +728,20 @@ trait Actor extends OutputChannel[Any] {
actor
}
- private[actors] def linkTo(to: Actor) {
+ private[actors] def linkTo(to: Actor) = synchronized {
links = to :: links
}
/**
- Unlinks <code>self</code> from actor <code>from</code>.
+ * Unlinks <code>self</code> from actor <code>from</code>.
*/
def unlink(from: Actor) {
+ assert(Actor.self == this, "unlink called on actor different from self")
links = links.remove(from.==)
from.unlinkFrom(this)
}
- private[actors] def unlinkFrom(from: Actor) {
+ private[actors] def unlinkFrom(from: Actor) = synchronized {
links = links.remove(from.==)
}