You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Vladimir Ivanov (JIRA)" <ji...@apache.org> on 2006/09/20 09:05:23 UTC
[jira] Created: (HARMONY-1499) [classlib][math]
BigDecimal((BigInteger)null, MathContext) throws NPE on Harmony and
ArithmeticException on RI
[classlib][math] BigDecimal((BigInteger)null, MathContext) throws NPE on Harmony and ArithmeticException on RI
--------------------------------------------------------------------------------------------------------------
Key: HARMONY-1499
URL: http://issues.apache.org/jira/browse/HARMONY-1499
Project: Harmony
Issue Type: Bug
Components: Classlib
Reporter: Vladimir Ivanov
Priority: Minor
The constructors BigDecimal((BigInteger)null, new MathContext("precision=14 roundingMode=UNNECESSARY")) and
BigDecimal(BigInteger unscaledVal, int scale, MathContext mc) throws NPE on Harmony and ArithmeticException on RI.
The spec says for BigDecimal class: "All methods and constructors for this class throw NullPointerException when passed a null object reference for any input parameter" and for the thes constructors: "Throws: ArithmeticException - if the result is inexact but the rounding mode is UNNECESSARY."
Seems, that the RI does not check input for 'null' values. While BEA throws NPE in this case and RI behavior contradicts to the spec it may be 'non-bug diff'.
================== test.java =====================
import java.math.*;
public class test {
public static void main(String[] args) {
try {
System.out.println("res = " + new BigDecimal((BigInteger)null, new MathContext("precision=14 roundingMode=DOWN")));
} catch (Exception e) {
e.printStackTrace();
}
try {
System.out.println("res = " + new BigDecimal((BigInteger)null, new MathContext("precision=14 roundingMode=UNNECESSARY")));
} catch (Exception e) {
e.printStackTrace();
}
try {
System.out.println("res = " + new BigDecimal((BigInteger)null, 1, new MathContext("precision=14 roundingMode=UNNECESSARY")));
} catch (Exception e) {
e.printStackTrace();
}
}
}
==============================================
Output:
---------------------------------------------------
C:\tmp\tmp17>C:\jdk1.5.0_08\bin\java.exe -cp . -showversion test
java version "1.5.0_08"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_08-b03)
Java HotSpot(TM) Client VM (build 1.5.0_08-b03, mixed mode)
res = -9.2233720368547E+18
java.lang.ArithmeticException: Rounding necessary
at java.math.BigDecimal.divide(BigDecimal.java:1346)
at java.math.BigDecimal.dropDigits(BigDecimal.java:3463)
at java.math.BigDecimal.doRound(BigDecimal.java:3433)
at java.math.BigDecimal.roundThis(BigDecimal.java:3399)
at java.math.BigDecimal.<init>(BigDecimal.java:811)
at test.main(test.java:11)
java.lang.ArithmeticException: Rounding necessary
at java.math.BigDecimal.divide(BigDecimal.java:1346)
at java.math.BigDecimal.dropDigits(BigDecimal.java:3463)
at java.math.BigDecimal.doRound(BigDecimal.java:3433)
at java.math.BigDecimal.roundThis(BigDecimal.java:3399)
at java.math.BigDecimal.<init>(BigDecimal.java:851)
at test.main(test.java:16)
---------------------------------------------------
C:\tmp\tmp17>C:\jrockit-jdk1.5.0-windows-ia32\bin\java.exe -cp . -showversion test
java version "1.5.0"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
BEA WebLogic JRockit(R) (build dra-38972-20041208-2001-win-ia32, R25.0.0-75, GC: System optimized over throughput (initial strategy singleparpar))
java.lang.NullPointerException
at java.math.BigDecimal.doRound(BigDecimal.java:3066)
at java.math.BigDecimal.roundThis(BigDecimal.java:3042)
at java.math.BigDecimal.<init>(BigDecimal.java:751)
at test.main(test.java:6)
java.lang.NullPointerException
at java.math.BigDecimal.doRound(BigDecimal.java:3066)
at java.math.BigDecimal.roundThis(BigDecimal.java:3042)
at java.math.BigDecimal.<init>(BigDecimal.java:751)
at test.main(test.java:11)
java.lang.NullPointerException
at java.math.BigDecimal.doRound(BigDecimal.java:3066)
at java.math.BigDecimal.roundThis(BigDecimal.java:3042)
at java.math.BigDecimal.<init>(BigDecimal.java:788)
at test.main(test.java:16)
---------------------------------------------------
C:\tmp\tmp17>C:\harmony\classlib1.5\deploy\jdk\jre\bin\java.exe -cp . test
java.lang.NullPointerException
at java.math.BigDecimal.<init>(BigDecimal.java:384)
at java.math.BigDecimal.<init>(BigDecimal.java:372)
at java.math.BigDecimal.<init>(BigDecimal.java:377)
at test.main(test.java:6)
java.lang.NullPointerException
at java.math.BigDecimal.<init>(BigDecimal.java:384)
at java.math.BigDecimal.<init>(BigDecimal.java:372)
at java.math.BigDecimal.<init>(BigDecimal.java:377)
at test.main(test.java:11)
java.lang.NullPointerException
at java.math.BigDecimal.<init>(BigDecimal.java:384)
at java.math.BigDecimal.<init>(BigDecimal.java:392)
at test.main(test.java:16)
---------------------------------------------------
C:\tmp\tmp17>C:\harmony\drlvm1.5\build\win_ia32_msvc_debug\deploy\jre\bin\java -Dvm.assert_dialog=false -cp . -showversion test
Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software Foundation or its licensors, as applicable.
java version "1.5.0"
pre-alpha : not complete or compatible
svn = r448020, (Sep 20 2006), Windows/ia32/msvc 1310, debug build
http://incubator.apache.org/harmony
java.lang.NullPointerException
at test.main(test.java:6)
java.lang.NullPointerException
at test.main(test.java:11)
java.lang.NullPointerException
at test.main(test.java:16)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] Closed: (HARMONY-1499) [classlib][math]
BigDecimal((BigInteger)null, MathContext) throws NPE on Harmony and
ArithmeticException on RI
Posted by "Tim Ellison (JIRA)" <ji...@apache.org>.
[ http://issues.apache.org/jira/browse/HARMONY-1499?page=all ]
Tim Ellison closed HARMONY-1499.
--------------------------------
Resolution: Fixed
as discussed here:
http://mail-archives.apache.org/mod_mbox/incubator-harmony-dev/200609.mbox/%3c7273946b0609200021l52ef30c4xc5e406f082a4e72@mail.gmail.com%3e
> [classlib][math] BigDecimal((BigInteger)null, MathContext) throws NPE on Harmony and ArithmeticException on RI
> --------------------------------------------------------------------------------------------------------------
>
> Key: HARMONY-1499
> URL: http://issues.apache.org/jira/browse/HARMONY-1499
> Project: Harmony
> Issue Type: Bug
> Components: Non-bug differences from RI
> Reporter: Vladimir Ivanov
> Priority: Minor
>
> The constructors BigDecimal((BigInteger)null, new MathContext("precision=14 roundingMode=UNNECESSARY")) and
> BigDecimal(BigInteger unscaledVal, int scale, MathContext mc) throws NPE on Harmony and ArithmeticException on RI.
> The spec says for BigDecimal class: "All methods and constructors for this class throw NullPointerException when passed a null object reference for any input parameter" and for the thes constructors: "Throws: ArithmeticException - if the result is inexact but the rounding mode is UNNECESSARY."
> Seems, that the RI does not check input for 'null' values. While BEA throws NPE in this case and RI behavior contradicts to the spec it may be 'non-bug diff'.
> ================== test.java =====================
> import java.math.*;
> public class test {
> public static void main(String[] args) {
> try {
> System.out.println("res = " + new BigDecimal((BigInteger)null, new MathContext("precision=14 roundingMode=DOWN")));
> } catch (Exception e) {
> e.printStackTrace();
> }
> try {
> System.out.println("res = " + new BigDecimal((BigInteger)null, new MathContext("precision=14 roundingMode=UNNECESSARY")));
> } catch (Exception e) {
> e.printStackTrace();
> }
> try {
> System.out.println("res = " + new BigDecimal((BigInteger)null, 1, new MathContext("precision=14 roundingMode=UNNECESSARY")));
> } catch (Exception e) {
> e.printStackTrace();
> }
> }
> }
> ==============================================
> Output:
> ---------------------------------------------------
> C:\tmp\tmp17>C:\jdk1.5.0_08\bin\java.exe -cp . -showversion test
> java version "1.5.0_08"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_08-b03)
> Java HotSpot(TM) Client VM (build 1.5.0_08-b03, mixed mode)
> res = -9.2233720368547E+18
> java.lang.ArithmeticException: Rounding necessary
> at java.math.BigDecimal.divide(BigDecimal.java:1346)
> at java.math.BigDecimal.dropDigits(BigDecimal.java:3463)
> at java.math.BigDecimal.doRound(BigDecimal.java:3433)
> at java.math.BigDecimal.roundThis(BigDecimal.java:3399)
> at java.math.BigDecimal.<init>(BigDecimal.java:811)
> at test.main(test.java:11)
> java.lang.ArithmeticException: Rounding necessary
> at java.math.BigDecimal.divide(BigDecimal.java:1346)
> at java.math.BigDecimal.dropDigits(BigDecimal.java:3463)
> at java.math.BigDecimal.doRound(BigDecimal.java:3433)
> at java.math.BigDecimal.roundThis(BigDecimal.java:3399)
> at java.math.BigDecimal.<init>(BigDecimal.java:851)
> at test.main(test.java:16)
> ---------------------------------------------------
> C:\tmp\tmp17>C:\jrockit-jdk1.5.0-windows-ia32\bin\java.exe -cp . -showversion test
> java version "1.5.0"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
> BEA WebLogic JRockit(R) (build dra-38972-20041208-2001-win-ia32, R25.0.0-75, GC: System optimized over throughput (initial strategy singleparpar))
> java.lang.NullPointerException
> at java.math.BigDecimal.doRound(BigDecimal.java:3066)
> at java.math.BigDecimal.roundThis(BigDecimal.java:3042)
> at java.math.BigDecimal.<init>(BigDecimal.java:751)
> at test.main(test.java:6)
> java.lang.NullPointerException
> at java.math.BigDecimal.doRound(BigDecimal.java:3066)
> at java.math.BigDecimal.roundThis(BigDecimal.java:3042)
> at java.math.BigDecimal.<init>(BigDecimal.java:751)
> at test.main(test.java:11)
> java.lang.NullPointerException
> at java.math.BigDecimal.doRound(BigDecimal.java:3066)
> at java.math.BigDecimal.roundThis(BigDecimal.java:3042)
> at java.math.BigDecimal.<init>(BigDecimal.java:788)
> at test.main(test.java:16)
> ---------------------------------------------------
> C:\tmp\tmp17>C:\harmony\classlib1.5\deploy\jdk\jre\bin\java.exe -cp . test
> java.lang.NullPointerException
> at java.math.BigDecimal.<init>(BigDecimal.java:384)
> at java.math.BigDecimal.<init>(BigDecimal.java:372)
> at java.math.BigDecimal.<init>(BigDecimal.java:377)
> at test.main(test.java:6)
> java.lang.NullPointerException
> at java.math.BigDecimal.<init>(BigDecimal.java:384)
> at java.math.BigDecimal.<init>(BigDecimal.java:372)
> at java.math.BigDecimal.<init>(BigDecimal.java:377)
> at test.main(test.java:11)
> java.lang.NullPointerException
> at java.math.BigDecimal.<init>(BigDecimal.java:384)
> at java.math.BigDecimal.<init>(BigDecimal.java:392)
> at test.main(test.java:16)
> ---------------------------------------------------
> C:\tmp\tmp17>C:\harmony\drlvm1.5\build\win_ia32_msvc_debug\deploy\jre\bin\java -Dvm.assert_dialog=false -cp . -showversion test
> Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software Foundation or its licensors, as applicable.
> java version "1.5.0"
> pre-alpha : not complete or compatible
> svn = r448020, (Sep 20 2006), Windows/ia32/msvc 1310, debug build
> http://incubator.apache.org/harmony
> java.lang.NullPointerException
> at test.main(test.java:6)
> java.lang.NullPointerException
> at test.main(test.java:11)
> java.lang.NullPointerException
> at test.main(test.java:16)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] Updated: (HARMONY-1499) [classlib][math]
BigDecimal((BigInteger)null, MathContext) throws NPE on Harmony and
ArithmeticException on RI
Posted by "Tim Ellison (JIRA)" <ji...@apache.org>.
[ http://issues.apache.org/jira/browse/HARMONY-1499?page=all ]
Tim Ellison updated HARMONY-1499:
---------------------------------
Component/s: Non-bug differences from RI
(was: Classlib)
> [classlib][math] BigDecimal((BigInteger)null, MathContext) throws NPE on Harmony and ArithmeticException on RI
> --------------------------------------------------------------------------------------------------------------
>
> Key: HARMONY-1499
> URL: http://issues.apache.org/jira/browse/HARMONY-1499
> Project: Harmony
> Issue Type: Bug
> Components: Non-bug differences from RI
> Reporter: Vladimir Ivanov
> Priority: Minor
>
> The constructors BigDecimal((BigInteger)null, new MathContext("precision=14 roundingMode=UNNECESSARY")) and
> BigDecimal(BigInteger unscaledVal, int scale, MathContext mc) throws NPE on Harmony and ArithmeticException on RI.
> The spec says for BigDecimal class: "All methods and constructors for this class throw NullPointerException when passed a null object reference for any input parameter" and for the thes constructors: "Throws: ArithmeticException - if the result is inexact but the rounding mode is UNNECESSARY."
> Seems, that the RI does not check input for 'null' values. While BEA throws NPE in this case and RI behavior contradicts to the spec it may be 'non-bug diff'.
> ================== test.java =====================
> import java.math.*;
> public class test {
> public static void main(String[] args) {
> try {
> System.out.println("res = " + new BigDecimal((BigInteger)null, new MathContext("precision=14 roundingMode=DOWN")));
> } catch (Exception e) {
> e.printStackTrace();
> }
> try {
> System.out.println("res = " + new BigDecimal((BigInteger)null, new MathContext("precision=14 roundingMode=UNNECESSARY")));
> } catch (Exception e) {
> e.printStackTrace();
> }
> try {
> System.out.println("res = " + new BigDecimal((BigInteger)null, 1, new MathContext("precision=14 roundingMode=UNNECESSARY")));
> } catch (Exception e) {
> e.printStackTrace();
> }
> }
> }
> ==============================================
> Output:
> ---------------------------------------------------
> C:\tmp\tmp17>C:\jdk1.5.0_08\bin\java.exe -cp . -showversion test
> java version "1.5.0_08"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_08-b03)
> Java HotSpot(TM) Client VM (build 1.5.0_08-b03, mixed mode)
> res = -9.2233720368547E+18
> java.lang.ArithmeticException: Rounding necessary
> at java.math.BigDecimal.divide(BigDecimal.java:1346)
> at java.math.BigDecimal.dropDigits(BigDecimal.java:3463)
> at java.math.BigDecimal.doRound(BigDecimal.java:3433)
> at java.math.BigDecimal.roundThis(BigDecimal.java:3399)
> at java.math.BigDecimal.<init>(BigDecimal.java:811)
> at test.main(test.java:11)
> java.lang.ArithmeticException: Rounding necessary
> at java.math.BigDecimal.divide(BigDecimal.java:1346)
> at java.math.BigDecimal.dropDigits(BigDecimal.java:3463)
> at java.math.BigDecimal.doRound(BigDecimal.java:3433)
> at java.math.BigDecimal.roundThis(BigDecimal.java:3399)
> at java.math.BigDecimal.<init>(BigDecimal.java:851)
> at test.main(test.java:16)
> ---------------------------------------------------
> C:\tmp\tmp17>C:\jrockit-jdk1.5.0-windows-ia32\bin\java.exe -cp . -showversion test
> java version "1.5.0"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
> BEA WebLogic JRockit(R) (build dra-38972-20041208-2001-win-ia32, R25.0.0-75, GC: System optimized over throughput (initial strategy singleparpar))
> java.lang.NullPointerException
> at java.math.BigDecimal.doRound(BigDecimal.java:3066)
> at java.math.BigDecimal.roundThis(BigDecimal.java:3042)
> at java.math.BigDecimal.<init>(BigDecimal.java:751)
> at test.main(test.java:6)
> java.lang.NullPointerException
> at java.math.BigDecimal.doRound(BigDecimal.java:3066)
> at java.math.BigDecimal.roundThis(BigDecimal.java:3042)
> at java.math.BigDecimal.<init>(BigDecimal.java:751)
> at test.main(test.java:11)
> java.lang.NullPointerException
> at java.math.BigDecimal.doRound(BigDecimal.java:3066)
> at java.math.BigDecimal.roundThis(BigDecimal.java:3042)
> at java.math.BigDecimal.<init>(BigDecimal.java:788)
> at test.main(test.java:16)
> ---------------------------------------------------
> C:\tmp\tmp17>C:\harmony\classlib1.5\deploy\jdk\jre\bin\java.exe -cp . test
> java.lang.NullPointerException
> at java.math.BigDecimal.<init>(BigDecimal.java:384)
> at java.math.BigDecimal.<init>(BigDecimal.java:372)
> at java.math.BigDecimal.<init>(BigDecimal.java:377)
> at test.main(test.java:6)
> java.lang.NullPointerException
> at java.math.BigDecimal.<init>(BigDecimal.java:384)
> at java.math.BigDecimal.<init>(BigDecimal.java:372)
> at java.math.BigDecimal.<init>(BigDecimal.java:377)
> at test.main(test.java:11)
> java.lang.NullPointerException
> at java.math.BigDecimal.<init>(BigDecimal.java:384)
> at java.math.BigDecimal.<init>(BigDecimal.java:392)
> at test.main(test.java:16)
> ---------------------------------------------------
> C:\tmp\tmp17>C:\harmony\drlvm1.5\build\win_ia32_msvc_debug\deploy\jre\bin\java -Dvm.assert_dialog=false -cp . -showversion test
> Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software Foundation or its licensors, as applicable.
> java version "1.5.0"
> pre-alpha : not complete or compatible
> svn = r448020, (Sep 20 2006), Windows/ia32/msvc 1310, debug build
> http://incubator.apache.org/harmony
> java.lang.NullPointerException
> at test.main(test.java:6)
> java.lang.NullPointerException
> at test.main(test.java:11)
> java.lang.NullPointerException
> at test.main(test.java:16)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira