summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorRui Gonçalves <ruippeixotog@gmail.com>2015-10-21 21:22:18 +0100
committerRui Gonçalves <ruippeixotog@gmail.com>2015-10-21 21:22:18 +0100
commite7079ca36aef1b74696f50fbdfe11d99273274d7 (patch)
tree9acfd6f8da0a4691d69ad968d15e7f79f9053c7b /src/library
parentba173164c700698d9469bf289b7b40cc11b4262d (diff)
downloadscala-e7079ca36aef1b74696f50fbdfe11d99273274d7.tar.gz
scala-e7079ca36aef1b74696f50fbdfe11d99273274d7.tar.bz2
scala-e7079ca36aef1b74696f50fbdfe11d99273274d7.zip
SI-9497 Fix SetLike#clear() default implementation
When dealing with mutable collections, it is not safe to assume iterators will remain consistent when the collection is modified mid-traversal. The bug reported in SI-9497 is very similar to SI-7269, "ConcurrentModificationException when filtering converted Java HashMap". Then, only the `retain` method was fixed. This commit fixes `clear`, which had the same problem.
Diffstat (limited to 'src/library')
-rw-r--r--src/library/scala/collection/mutable/SetLike.scala4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/library/scala/collection/mutable/SetLike.scala b/src/library/scala/collection/mutable/SetLike.scala
index 81a71adc91..01075a2633 100644
--- a/src/library/scala/collection/mutable/SetLike.scala
+++ b/src/library/scala/collection/mutable/SetLike.scala
@@ -129,7 +129,9 @@ trait SetLike[A, +This <: SetLike[A, This] with Set[A]]
/** Removes all elements from the set. After this operation is completed,
* the set will be empty.
*/
- def clear() { foreach(-=) }
+ def clear(): Unit =
+ for (elem <- this.toList)
+ this -= elem
override def clone(): This = empty ++= repr.seq