This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] [JAVA] Double.parseDouble(null) throw NullPointerException


Hi Tom,

RTEMS does not have virtual memory management, so there is no error
when access the 0 address on rtems.
So 'str->length()' donot throw NPE and just return an meaningless value.

Ps: There is a test:
http://code.google.com/p/rtemsgcj/source/browse/trunk/algorithm/20110810NPE/?r=127,
npe.c is the main file and *.scn is the output.

Thanks,
Jie

2011/8/8 Tom Tromey <tromey@redhat.com>:
>>>>>> "Jie" == Jie Liu <lj8175@gmail.com> writes:
>
> Jie> + ?if(str == NULL)
> Jie> + ? ? ?throw new NullPointerException();
> Jie> +
> Jie> ? ?int length = str->length();
>
> Why doesn't 'str->length()' throw the NPE?
>
> Tom
>
=========== The first mail, for adding Joel ===========
Hi,

When I use gcj on an RTOS(RTEMS), Double.parseDouble(null) throw
NumberFormatException, but it should throw NullPointerException. So I
add the patch below:

Index: natVMDouble.cc
===================================================================
--- natVMDouble.cc	(revision 172224)
+++ natVMDouble.cc	(working copy)
@@ -19,6 +19,7 @@
 #include <java/lang/VMDouble.h>
 #include <java/lang/Character.h>
 #include <java/lang/NumberFormatException.h>
+#include <java/lang/NullPointerException.h>
 #include <jvm.h>

 #include <stdio.h>
@@ -162,6 +163,9 @@
 jdouble
 java::lang::VMDouble::parseDouble(jstring str)
 {
+  if(str == NULL)
+      throw new NullPointerException();
+
   int length = str->length();

   while (length > 0

The testsuite/Throw_2.java has been PASS after this patch. what do you
think about this patch?

Thanks,
Jie


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]