Hi,
Committed.
Regards,
Jeroen
2007-06-21 Jeroen Frijters <[EMAIL PROTECTED]>
Fixes #32356
* java/lang/reflect/Array.java
(newInstance(Class,int[])): Call createMultiArray correctly.
(createMultiArray): Fixed dimensions processing order.
Index: java/lang/reflect/Array.java
===================================================================
RCS file: /cvsroot/classpath/classpath/java/lang/reflect/Array.java,v
retrieving revision 1.16
diff -u -r1.16 Array.java
--- java/lang/reflect/Array.java 10 Dec 2006 20:25:45 -0000 1.16
+++ java/lang/reflect/Array.java 15 Jun 2007 15:22:47 -0000
@@ -147,8 +147,7 @@
{
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 @@
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 @@
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;
}