From 2a1d935b4887237e51f4c0685d2c661f4c3fda8f Mon Sep 17 00:00:00 2001 From: jchen Date: Thu, 3 Oct 2013 13:26:45 -0700 Subject: [PATCH] 8025480: [parfait] "JNI exception pending" warnings from b107 for jdk.src.share.native.sun.java2d Reviewed-by: prr, jgodinez --- src/share/native/sun/java2d/Disposer.c | 9 ++++++--- src/share/native/sun/java2d/SurfaceData.c | 4 +++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/share/native/sun/java2d/Disposer.c b/src/share/native/sun/java2d/Disposer.c index 5379df637..611631732 100644 --- a/src/share/native/sun/java2d/Disposer.c +++ b/src/share/native/sun/java2d/Disposer.c @@ -38,10 +38,9 @@ Java_sun_java2d_Disposer_initIDs(JNIEnv *env, jclass disposerClass) { addRecordMID = (*env)->GetStaticMethodID(env, disposerClass, "addRecord", "(Ljava/lang/Object;JJ)V"); - if (addRecordMID == 0) { - JNU_ThrowNoSuchMethodError(env, "Disposer.addRecord"); + if (addRecordMID != 0) { + dispClass = (*env)->NewGlobalRef(env, disposerClass); } - dispClass = (*env)->NewGlobalRef(env, disposerClass); } JNIEXPORT void JNICALL @@ -50,6 +49,10 @@ Disposer_AddRecord(JNIEnv *env, jobject obj, GeneralDisposeFunc disposer, jlong if (dispClass == NULL) { /* Needed to initialize the Disposer class as it may be not yet referenced */ jclass clazz = (*env)->FindClass(env, "sun/java2d/Disposer"); + if ((*env)->ExceptionCheck(env)) { + // If there's exception pending, we'll just return. + return; + } } (*env)->CallStaticVoidMethod(env, dispClass, addRecordMID, diff --git a/src/share/native/sun/java2d/SurfaceData.c b/src/share/native/sun/java2d/SurfaceData.c index 73d43adf7..d72fa284f 100644 --- a/src/share/native/sun/java2d/SurfaceData.c +++ b/src/share/native/sun/java2d/SurfaceData.c @@ -237,7 +237,9 @@ SurfaceDataOps *SurfaceData_InitOps(JNIEnv *env, jobject sData, int opsSize) SurfaceData_SetOps(env, sData, ops); if (ops != NULL) { memset(ops, 0, opsSize); - ops->sdObject = (*env)->NewWeakGlobalRef(env, sData); + if (!(*env)->ExceptionCheck(env)) { + ops->sdObject = (*env)->NewWeakGlobalRef(env, sData); + } } return ops; } -- GitLab