From dfb90463874fdb27902d052c91e8db88cc19f0ce Mon Sep 17 00:00:00 2001 From: Sean McDirmid Date: Wed, 16 May 2007 10:48:36 +0000 Subject: Fixed race condition --- src/library/scala/Symbol.scala | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/library/scala/Symbol.scala b/src/library/scala/Symbol.scala index dfb246a493..112764a223 100644 --- a/src/library/scala/Symbol.scala +++ b/src/library/scala/Symbol.scala @@ -47,8 +47,9 @@ final case class Symbol(name: String) { * * @return the unique reference to this symbol. */ - def intern: Symbol = synchronized { internedSymbols get name match { - case Some(sym) if sym.isValid => sym.apply + def intern: Symbol = synchronized { + internedSymbols.get(name).map(.get).getOrElse(None) match { + case Some(sym) => sym case _ => internedSymbols(name) = new ref.WeakReference(this); this } } -- cgit v1.2.3