OSDN Git Service

PR libgcj/26103:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 7 Mar 2006 21:39:44 +0000 (21:39 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 7 Mar 2006 21:39:44 +0000 (21:39 +0000)
* java/lang/ClassLoader.java (loadClass): Don't throw
StringIndexOutOfBoundsException if name is empty.
* java/lang/natClassLoader.cc (loadClassFromSig): Throw exception
if class not found.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@111820 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/java/lang/ClassLoader.java
libjava/java/lang/natClassLoader.cc

index 463c47a..ffbc3f4 100644 (file)
@@ -1,3 +1,11 @@
+2006-03-07  Tom Tromey  <tromey@redhat.com>
+
+       PR libgcj/26103:
+       * java/lang/ClassLoader.java (loadClass): Don't throw
+       StringIndexOutOfBoundsException if name is empty.
+       * java/lang/natClassLoader.cc (loadClassFromSig): Throw exception
+       if class not found.
+
 2006-03-07  David Daney  <ddaney@avtrex.com>
 
        * include/java-interp.h: Removed extern "C" around #include <ffi.h>.
index e3051bc..13d8ca6 100644 (file)
@@ -1,5 +1,5 @@
 /* ClassLoader.java -- responsible for loading classes into the VM
-   Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -288,7 +288,7 @@ public abstract class ClassLoader
   {
     // Arrays are handled specially.
     Class c;
-    if (name.charAt(0) == '[')
+    if (name.length() > 0 && name.charAt(0) == '[')
       c = loadClassFromSig(name);
     else
       {
index fa6f201..d22d6c2 100644 (file)
@@ -81,7 +81,10 @@ java::lang::ClassLoader::loadClassFromSig(jstring name)
   int len = _Jv_GetStringUTFLength (name);
   char sig[len + 1];
   _Jv_GetStringUTFRegion (name, 0, name->length(), sig);
-  return _Jv_FindClassFromSignature(sig, this);
+  jclass result = _Jv_FindClassFromSignature(sig, this);
+  if (result == NULL)
+    throw new ClassNotFoundException(name);
+  return result;
 }
 
 \f