From c9930bfaf28093fe419de3cf034b4bf7888b3818 Mon Sep 17 00:00:00 2001 From: Rex Kerr Date: Fri, 30 Jan 2015 18:27:52 -0800 Subject: SI-8917 collection.mutable.BitSet's &= operator doesn't clear end Made &= run to the end of its own bitset, ignoring the size of what it's &-ing with (which is exactly what you want for &=). --- src/library/scala/collection/mutable/BitSet.scala | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/library') diff --git a/src/library/scala/collection/mutable/BitSet.scala b/src/library/scala/collection/mutable/BitSet.scala index 78150b5e88..e92d48cfeb 100644 --- a/src/library/scala/collection/mutable/BitSet.scala +++ b/src/library/scala/collection/mutable/BitSet.scala @@ -121,8 +121,10 @@ class BitSet(protected final var elems: Array[Long]) extends AbstractSet[Int] * @return the bitset itself. */ def &= (other: BitSet): this.type = { - ensureCapacity(other.nwords - 1) - for (i <- 0 until other.nwords) + // Different from other operations: no need to ensure capacity because + // anything beyond the capacity is 0. Since we use other.word which is 0 + // off the end, we also don't need to make sure we stay in bounds there. + for (i <- 0 until nwords) elems(i) = elems(i) & other.word(i) this } -- cgit v1.2.3