diff options
author | Tom Tromey <tromey@redhat.com> | 2006-06-27 15:33:24 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2006-06-27 15:33:24 +0000 |
commit | 10caa6ef967b225ec6e3657a3d76fea35acef0a7 (patch) | |
tree | 13cfcf691ed1709219a0b4189d313ba52839509e /libjava/jni.cc | |
parent | 578089dba034de92992b968615ea5ca3625f6aed (diff) | |
download | gcc-10caa6ef967b225ec6e3657a3d76fea35acef0a7.zip gcc-10caa6ef967b225ec6e3657a3d76fea35acef0a7.tar.gz gcc-10caa6ef967b225ec6e3657a3d76fea35acef0a7.tar.bz2 |
re PR libgcj/28178 (jniEnv->DeleteLocalRef (null) fails)
PR libgcj/28178:
* jni.cc (_Jv_JNI_DeleteLocalRef): Ignore null argument.
(_Jv_JNI_DeleteGlobalRef): Likewise.
* testsuite/libjava.jni/PR28178.java: New file.
* testsuite/libjava.jni/PR28178.c: New file.
* testsuite/libjava.jni/PR28178.out: New file.
From-SVN: r115034
Diffstat (limited to 'libjava/jni.cc')
-rw-r--r-- | libjava/jni.cc | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/libjava/jni.cc b/libjava/jni.cc index 19539c7..67ba8fa 100644 --- a/libjava/jni.cc +++ b/libjava/jni.cc @@ -248,6 +248,12 @@ _Jv_JNI_DeleteGlobalRef (JNIEnv *, jobject obj) { // This seems weird but I think it is correct. obj = unwrap (obj); + + // NULL is ok here -- the JNI specification doesn't say so, but this + // is a no-op. + if (! obj) + return; + unmark_for_gc (obj, global_ref_table); } @@ -259,6 +265,11 @@ _Jv_JNI_DeleteLocalRef (JNIEnv *env, jobject obj) // This seems weird but I think it is correct. obj = unwrap (obj); + // NULL is ok here -- the JNI specification doesn't say so, but this + // is a no-op. + if (! obj) + return; + for (frame = env->locals; frame != NULL; frame = frame->next) { for (int i = 0; i < frame->size; ++i) |