diff options
Diffstat (limited to 'libjava/classpath/java/lang/reflect')
-rw-r--r-- | libjava/classpath/java/lang/reflect/Array.java | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/libjava/classpath/java/lang/reflect/Array.java b/libjava/classpath/java/lang/reflect/Array.java index 373bf204c8e..fee9f0172ee 100644 --- a/libjava/classpath/java/lang/reflect/Array.java +++ b/libjava/classpath/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; } |