From 9fe2e733d2819b630c747ad8d73332bc76552362 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Tue, 7 Mar 2006 21:39:44 +0000 Subject: re PR libgcj/26103 (Wrong exception thrown) 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. From-SVN: r111820 --- libjava/java/lang/ClassLoader.java | 4 ++-- libjava/java/lang/natClassLoader.cc | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'libjava/java/lang') diff --git a/libjava/java/lang/ClassLoader.java b/libjava/java/lang/ClassLoader.java index e3051bc..13d8ca6 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 fa6f201..d22d6c2 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; } -- cgit v1.1