summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2007-11-17 20:24:21 +0000
committerMartin Odersky <odersky@gmail.com>2007-11-17 20:24:21 +0000
commitac55b8a3c32eb837080e7f39fa3eeeb68a5e2014 (patch)
tree1036bb63198fe4ac5d4c750ac53df4986c3f5a76 /src/library
parent3818b76a0d280d28316b1607698163c8da4f7a67 (diff)
downloadscala-ac55b8a3c32eb837080e7f39fa3eeeb68a5e2014.tar.gz
scala-ac55b8a3c32eb837080e7f39fa3eeeb68a5e2014.tar.bz2
scala-ac55b8a3c32eb837080e7f39fa3eeeb68a5e2014.zip
Fixed #214, #217, #218
Diffstat (limited to 'src/library')
-rw-r--r--src/library/scala/collection/immutable/HashSet.scala4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/library/scala/collection/immutable/HashSet.scala b/src/library/scala/collection/immutable/HashSet.scala
index 4de43cad46..5e6dd10f50 100644
--- a/src/library/scala/collection/immutable/HashSet.scala
+++ b/src/library/scala/collection/immutable/HashSet.scala
@@ -86,7 +86,9 @@ class HashSet[A] extends Set[A] with mutable.FlatHashTable[A] {
override def elements = synchronized {
makeCopyIfUpdated()
- super.elements
+ // note need to cache because (later versions of) set might be mutated while elements are traversed.
+ val cached = new mutable.ArrayBuffer() ++ super.elements
+ cached.elements
}
private def logLimit: Int = Math.sqrt(table.length).toInt