diff options
author | Sean McDirmid <sean.mcdirmid@gmail.com> | 2007-05-16 10:48:36 +0000 |
---|---|---|
committer | Sean McDirmid <sean.mcdirmid@gmail.com> | 2007-05-16 10:48:36 +0000 |
commit | dfb90463874fdb27902d052c91e8db88cc19f0ce (patch) | |
tree | 5fc4f6a202303de1523fcd09101d161205b8e7b6 /src | |
parent | 58f003be77bd2a48c4385cda75fe32148b57621d (diff) | |
download | scala-dfb90463874fdb27902d052c91e8db88cc19f0ce.tar.gz scala-dfb90463874fdb27902d052c91e8db88cc19f0ce.tar.bz2 scala-dfb90463874fdb27902d052c91e8db88cc19f0ce.zip |
Fixed race condition
Diffstat (limited to 'src')
-rw-r--r-- | src/library/scala/Symbol.scala | 5 |
1 files 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 } } |