diff options
author | Philipp Haller <hallerp@gmail.com> | 2008-03-05 08:45:25 +0000 |
---|---|---|
committer | Philipp Haller <hallerp@gmail.com> | 2008-03-05 08:45:25 +0000 |
commit | 84e704d8b97de2b3f799a2852a80ba4c3d3b15e8 (patch) | |
tree | fc56f949a919fc75962b247d965c6afb9d0a2bd7 /src | |
parent | a62078efe9d5fbda6151e8151a245528327c8250 (diff) | |
download | scala-84e704d8b97de2b3f799a2852a80ba4c3d3b15e8.tar.gz scala-84e704d8b97de2b3f799a2852a80ba4c3d3b15e8.tar.bz2 scala-84e704d8b97de2b3f799a2852a80ba4c3d3b15e8.zip |
Fixed #585.
Diffstat (limited to 'src')
-rw-r--r-- | src/actors/scala/actors/Actor.scala | 8 |
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.==) } |