diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-04-05 22:26:26 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-04-05 22:26:26 +0000 |
commit | be7d01ed62d74d9c4b7b53f96bb82c8f109f859e (patch) | |
tree | 2e7ab5655ae0f92acaf1825446f2fec39bb2a56e /libjava/jni.cc | |
parent | 9f587d943d2e682a674b64bb64f0086318dc8eb7 (diff) | |
download | gcc-be7d01ed62d74d9c4b7b53f96bb82c8f109f859e.tar.gz |
* jni.cc (_Jv_JNI_GetAnyFieldID): Throw ClassNotFoundException.
* java/lang/reflect/natMethod.cc (_Jv_GetTypesFromSignature):
Rewrote to use _Jv_FindClassFromSignature.
* verify.cc (resolve): throw NoClassDefFoundError.
* link.cc (resolve_field): Throw NoClassDefFoundError.
(find_field): Likewise.
* prims.cc (_Jv_FindClassFromSignature): Removed recursion.
Handle error cases. Added 'endp' argument.
* include/jvm.h (_Jv_FindClassFromSignature): Updated prototype.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@97660 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/jni.cc')
-rw-r--r-- | libjava/jni.cc | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/libjava/jni.cc b/libjava/jni.cc index 5f9d5f79e71..b68c3bb887f 100644 --- a/libjava/jni.cc +++ b/libjava/jni.cc @@ -46,6 +46,7 @@ details. */ #include <java/nio/DirectByteBufferImpl$ReadWrite.h> #include <java/util/IdentityHashMap.h> #include <gnu/gcj/RawData.h> +#include <java/lang/ClassNotFoundException.h> #include <gcj/method.h> #include <gcj/field.h> @@ -1200,8 +1201,8 @@ _Jv_JNI_GetAnyFieldID (JNIEnv *env, jclass clazz, for (int i = 0; i <= len; ++i) s[i] = (sig[i] == '/') ? '.' : sig[i]; jclass field_class = _Jv_FindClassFromSignature ((char *) s, NULL); - - // FIXME: what if field_class == NULL? + if (! field_class) + throw new java::lang::ClassNotFoundException(JvNewStringUTF(s)); java::lang::ClassLoader *loader = clazz->getClassLoaderInternal (); while (clazz != NULL) |