From f461ac7401a16e8b2f0c06ed49fe1fcadc1b50b5 Mon Sep 17 00:00:00 2001 From: Philipp Haller Date: Mon, 4 May 2009 10:30:31 +0000 Subject: Fixed potential memory leak. --- src/actors/scala/actors/Actor.scala | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'src/actors') diff --git a/src/actors/scala/actors/Actor.scala b/src/actors/scala/actors/Actor.scala index 0f5faedd50..8c98f45d41 100644 --- a/src/actors/scala/actors/Actor.scala +++ b/src/actors/scala/actors/Actor.scala @@ -403,13 +403,6 @@ trait Actor extends AbstractActor { */ def send(msg: Any, replyTo: OutputChannel[Any]) = synchronized { if (waitingFor(msg)) { - received = Some(msg) - - if (isSuspended) - sessions = replyTo :: sessions - else - sessions = List(replyTo) - waitingFor = waitingForNone if (!onTimeout.isEmpty) { @@ -417,10 +410,15 @@ trait Actor extends AbstractActor { onTimeout = None } - if (isSuspended) + if (isSuspended) { + sessions = replyTo :: sessions + received = Some(msg) resumeActor() - else // assert continuation != null + } else { + sessions = List(replyTo) + // assert continuation != null scheduler.execute(new Reaction(this, continuation, msg)) + } } else { mailbox.append(msg, replyTo) } @@ -446,6 +444,7 @@ trait Actor extends AbstractActor { } } val result = f(received.get) + received = None sessions = sessions.tail result } @@ -496,6 +495,7 @@ trait Actor extends AbstractActor { } } val result = f(received.get) + received = None sessions = sessions.tail result } -- cgit v1.2.3