From f80b2f863c7d48851292b91ff4f4770dcc53d290 Mon Sep 17 00:00:00 2001 From: Petr Pchelko <pchelko@openjdk.org> Date: Mon, 17 Mar 2014 13:03:39 +0400 Subject: [PATCH] 8036793: [parfait] JNI exception pending in jdk/src/windows/native/sun/windows/awt_new.cpp Reviewed-by: anthony, serb, azvegint --- jdk/src/windows/native/sun/windows/awt_new.cpp | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/jdk/src/windows/native/sun/windows/awt_new.cpp b/jdk/src/windows/native/sun/windows/awt_new.cpp index e22aa3b6458..306f08d5963 100644 --- a/jdk/src/windows/native/sun/windows/awt_new.cpp +++ b/jdk/src/windows/native/sun/windows/awt_new.cpp @@ -163,18 +163,13 @@ jthrowable safe_ExceptionOccurred(JNIEnv *env) throw (std::bad_alloc) { jthrowable xcp = env->ExceptionOccurred(); if (xcp != NULL) { - env->ExceptionClear(); // if we don't do this, FindClass will fail - - jclass outofmem = env->FindClass("java/lang/OutOfMemoryError"); - DASSERT(outofmem != NULL); - jboolean isOutofmem = env->IsInstanceOf(xcp, outofmem); - - env->DeleteLocalRef(outofmem); - - if (isOutofmem) { + env->ExceptionClear(); // if we don't do this, isInstanceOf will fail + jint isOutofmem = JNU_IsInstanceOfByName(env, xcp, "java/lang/OutOfMemoryError"); + if (isOutofmem > 0) { env->DeleteLocalRef(xcp); throw std::bad_alloc(); } else { + env->ExceptionClear(); // rethrow exception env->Throw(xcp); return xcp;