summaryrefslogtreecommitdiff
path: root/java/lang/reflect/Array.java
diff options
context:
space:
mode:
authorJeroen Frijters <jeroen@sumatra.nl>2007-06-21 05:39:49 +0000
committerJeroen Frijters <jeroen@sumatra.nl>2007-06-21 05:39:49 +0000
commitd823a587777da37431ad5abf1ed69fc1a81ce1dc (patch)
tree787db51134d4a5b23a5f21aae3167e9be79e7771 /java/lang/reflect/Array.java
parenta92f7df19114e8e0b524395fe921cf331da85fa5 (diff)
downloadclasspath-d823a587777da37431ad5abf1ed69fc1a81ce1dc.tar.gz
2007-06-21 Jeroen Frijters <jeroen@frijters.net>
Fixes #32356 * java/lang/reflect/Array.java (newInstance(Class,int[])): Call createMultiArray correctly. (createMultiArray): Fixed dimensions processing order.
Diffstat (limited to 'java/lang/reflect/Array.java')
-rw-r--r--java/lang/reflect/Array.java11
1 files changed, 5 insertions, 6 deletions
diff --git a/java/lang/reflect/Array.java b/java/lang/reflect/Array.java
index 373bf204c..fee9f0172 100644
--- a/java/lang/reflect/Array.java
+++ b/java/lang/reflect/Array.java
@@ -147,8 +147,7 @@ public final class Array
{
if (dimensions.length <= 0)
throw new IllegalArgumentException ("Empty dimensions array.");
- return createMultiArray(componentType, dimensions,
- dimensions.length - 1);
+ return createMultiArray(componentType, dimensions, 0);
}
/**
@@ -638,10 +637,10 @@ public final class Array
private static Object createMultiArray(Class type, int[] dimensions,
int index)
{
- if (index == 0)
- return newInstance(type, dimensions[0]);
+ if (index == dimensions.length - 1)
+ return newInstance(type, dimensions[index]);
- Object toAdd = createMultiArray(type, dimensions, index - 1);
+ Object toAdd = createMultiArray(type, dimensions, index + 1);
Class thisType = toAdd.getClass();
Object[] retval
= (Object[]) VMArray.createObjectArray(thisType, dimensions[index]);
@@ -649,7 +648,7 @@ public final class Array
retval[0] = toAdd;
int i = dimensions[index];
while (--i > 0)
- retval[i] = createMultiArray(type, dimensions, index - 1);
+ retval[i] = createMultiArray(type, dimensions, index + 1);
return retval;
}