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; }