diff options
author | Rui Gonçalves <ruippeixotog@gmail.com> | 2015-10-21 21:22:18 +0100 |
---|---|---|
committer | Rui Gonçalves <ruippeixotog@gmail.com> | 2015-10-21 21:22:18 +0100 |
commit | e7079ca36aef1b74696f50fbdfe11d99273274d7 (patch) | |
tree | 9acfd6f8da0a4691d69ad968d15e7f79f9053c7b /src/library | |
parent | ba173164c700698d9469bf289b7b40cc11b4262d (diff) | |
download | scala-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.scala | 4 |
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 |