summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2006-05-16 10:37:52 +0000
committerMartin Odersky <odersky@gmail.com>2006-05-16 10:37:52 +0000
commit703ba993c311aa8d452608fc94414e2778218fd6 (patch)
tree20efe4dcbff70308e0b0eca2258a63367b14aa5b /src/library
parentbc4bd901b1372716e8071e64d0d2c9e065597e99 (diff)
downloadscala-703ba993c311aa8d452608fc94414e2778218fd6.tar.gz
scala-703ba993c311aa8d452608fc94414e2778218fd6.tar.bz2
scala-703ba993c311aa8d452608fc94414e2778218fd6.zip
Fixed bug 594
Diffstat (limited to 'src/library')
-rw-r--r--src/library/scala/runtime/BoxedObjectArray.scala9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/library/scala/runtime/BoxedObjectArray.scala b/src/library/scala/runtime/BoxedObjectArray.scala
index 3d1b2d8c46..6563e12e4b 100644
--- a/src/library/scala/runtime/BoxedObjectArray.scala
+++ b/src/library/scala/runtime/BoxedObjectArray.scala
@@ -31,8 +31,13 @@ final class BoxedObjectArray(val value: Array[Object]) extends BoxedArray {
override def hashCode(): Int = value.hashCode();
+ private def create(length: int): Array[Object] = {
+ val elemClass = value.getClass().getComponentType()
+ java.lang.reflect.Array.newInstance(elemClass, length).asInstanceOf[Array[Object]]
+ }
+
override def subArray(start: Int, end: Int): Array[Object] = {
- val result = new Array[Object](end - start);
+ val result = create(end - start)
Array.copy(value, 0, result, 0, end - start)
result
}
@@ -45,7 +50,7 @@ final class BoxedObjectArray(val value: Array[Object]) extends BoxedArray {
if (p(value(i))) { include(i) = true; len = len + 1 }
i = i + 1
}
- val result = new Array[Object](len);
+ val result = create(len);
len = 0;
i = 0;
while (len < result.length) {