diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-03-07 21:39:44 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2006-03-07 21:39:44 +0000 |
commit | 2896b36927e6b91beefa0a4ca83479e68583fc57 (patch) | |
tree | 8e8b3c0fcda7a66c350e08f6df600d9d7ed7c694 | |
parent | 2a4b6f844be460d1e7c4c17a2cb06058fdd41294 (diff) |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@111820 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | libjava/ChangeLog | 8 | ||||
-rw-r--r-- | libjava/java/lang/ClassLoader.java | 4 | ||||
-rw-r--r-- | libjava/java/lang/natClassLoader.cc | 5 |
3 files changed, 14 insertions, 3 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 463c47af70e..ffbc3f4b549 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -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>. diff --git a/libjava/java/lang/ClassLoader.java b/libjava/java/lang/ClassLoader.java index e3051bc40b5..13d8ca65e47 100644 --- a/libjava/java/lang/ClassLoader.java +++ b/libjava/java/lang/ClassLoader.java @@ -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 { diff --git a/libjava/java/lang/natClassLoader.cc b/libjava/java/lang/natClassLoader.cc index fa6f201db46..d22d6c2fa15 100644 --- a/libjava/java/lang/natClassLoader.cc +++ b/libjava/java/lang/natClassLoader.cc @@ -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; } |