From b2c3f87c7b1b613495eb563d909f24e1e22369d1 Mon Sep 17 00:00:00 2001 From: Aleksandar Prokopec Date: Fri, 4 May 2012 13:47:05 +0200 Subject: [PATCH] Fix for si-5590. --- .../scala/collection/mutable/HashTable.scala | 2 +- .../collection/mutable/LinkedHashMap.scala | 8 +++++ test/files/run/t5590.check | 4 +++ test/files/run/t5590.scala | 31 +++++++++++++++++++ 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 test/files/run/t5590.check create mode 100644 test/files/run/t5590.scala diff --git a/src/library/scala/collection/mutable/HashTable.scala b/src/library/scala/collection/mutable/HashTable.scala index 06b7d40bfcfc..a2f78dbde925 100644 --- a/src/library/scala/collection/mutable/HashTable.scala +++ b/src/library/scala/collection/mutable/HashTable.scala @@ -187,7 +187,7 @@ trait HashTable[A, Entry >: Null <: HashEntry[A, Entry]] extends HashTable.HashU } /** Avoid iterator for a 2x faster traversal. */ - protected final def foreachEntry[C](f: Entry => C) { + protected def foreachEntry[C](f: Entry => C) { val iterTable = table var idx = lastPopulatedIndex var es = iterTable(idx) diff --git a/src/library/scala/collection/mutable/LinkedHashMap.scala b/src/library/scala/collection/mutable/LinkedHashMap.scala index cd174523b116..4150cf9ebac0 100644 --- a/src/library/scala/collection/mutable/LinkedHashMap.scala +++ b/src/library/scala/collection/mutable/LinkedHashMap.scala @@ -132,6 +132,14 @@ class LinkedHashMap[A, B] extends AbstractMap[A, B] } } + protected override def foreachEntry[C](f: Entry => C) { + var cur = firstEntry + while (cur ne null) { + f(cur) + cur = cur.later + } + } + override def clear() { clearTable() firstEntry = null diff --git a/test/files/run/t5590.check b/test/files/run/t5590.check new file mode 100644 index 000000000000..ad4a2eee6496 --- /dev/null +++ b/test/files/run/t5590.check @@ -0,0 +1,4 @@ +Map(a -> a, b -> b, c -> c) +Map(a -> a, b -> b, c -> c) +Set(a, b, c, d, e) +Set(a, b, c, d, e) \ No newline at end of file diff --git a/test/files/run/t5590.scala b/test/files/run/t5590.scala new file mode 100644 index 000000000000..9c806e0b7d88 --- /dev/null +++ b/test/files/run/t5590.scala @@ -0,0 +1,31 @@ + + + +import java.io._ +import collection._ + + + +object Test { + + def check(obj: AnyRef) { + println(obj) + + val bos = new ByteArrayOutputStream() + val out = new ObjectOutputStream(bos) + out.writeObject(obj) + val arr = bos.toByteArray() + val in = new ObjectInputStream(new ByteArrayInputStream(arr)) + val deser = in.readObject() + + println(deser) + } + + def main(args: Array[String]) { + val lhm = mutable.LinkedHashMap("a" -> "a", "b" -> "b", "c" -> "c") + val lhs = mutable.LinkedHashSet("a", "b", "c", "d", "e") + check(lhm) + check(lhs) + } + +}