### Eclipse Workspace Patch 1.0 #P HEAD Index: modules/math/src/test/java/org/apache/harmony/tests/java/math/BigDecimalArithmeticTest.java =================================================================== --- modules/math/src/test/java/org/apache/harmony/tests/java/math/BigDecimalArithmeticTest.java (revision 793515) +++ modules/math/src/test/java/org/apache/harmony/tests/java/math/BigDecimalArithmeticTest.java (working copy) @@ -1287,6 +1287,22 @@ assertEquals("incorrect scale", resScale, result.scale()); } + + /** + * BigDecimal.divide with a scale that's too large + */ + public void testDivideLargeScale() { + BigDecimal arg1 = new BigDecimal("1"); + BigDecimal arg2 = new BigDecimal("2"); + try { + BigDecimal result = arg1.divide(arg2, Integer.MAX_VALUE, + java.math.RoundingMode.CEILING); + fail("Expected ArithmeticException when dividing with a scale that's too large"); + } catch (ArithmeticException e) { + // expected behaviour + } + } + /** * divideToIntegralValue(BigDecimal) */ Index: modules/math/src/main/java/java/math/Multiplication.java =================================================================== --- modules/math/src/main/java/java/math/Multiplication.java (revision 793515) +++ modules/math/src/main/java/java/math/Multiplication.java (working copy) @@ -440,7 +440,7 @@ if (byteArraySize > Runtime.getRuntime().freeMemory()) { // math.01=power of ten too big - throw new OutOfMemoryError(Messages.getString("math.01")); //$NON-NLS-1$ + throw new ArithmeticException(Messages.getString("math.01")); //$NON-NLS-1$ } if (exp <= Integer.MAX_VALUE) { // To calculate: 5^exp * 2^exp