summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSean McDirmid <sean.mcdirmid@gmail.com>2007-05-16 10:48:36 +0000
committerSean McDirmid <sean.mcdirmid@gmail.com>2007-05-16 10:48:36 +0000
commitdfb90463874fdb27902d052c91e8db88cc19f0ce (patch)
tree5fc4f6a202303de1523fcd09101d161205b8e7b6 /src
parent58f003be77bd2a48c4385cda75fe32148b57621d (diff)
downloadscala-dfb90463874fdb27902d052c91e8db88cc19f0ce.tar.gz
scala-dfb90463874fdb27902d052c91e8db88cc19f0ce.tar.bz2
scala-dfb90463874fdb27902d052c91e8db88cc19f0ce.zip
Fixed race condition
Diffstat (limited to 'src')
-rw-r--r--src/library/scala/Symbol.scala5
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
} }