From 84e704d8b97de2b3f799a2852a80ba4c3d3b15e8 Mon Sep 17 00:00:00 2001 From: Philipp Haller Date: Wed, 5 Mar 2008 08:45:25 +0000 Subject: Fixed #585. --- src/actors/scala/actors/Actor.scala | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src') 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 self from actor from. + * Unlinks self from actor from. */ 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.==) } -- cgit v1.2.3