From fffc649724e12c43e6164a98fe22caba7e3ec496 Mon Sep 17 00:00:00 2001 From: pchelko Date: Thu, 20 Feb 2014 17:26:03 +0400 Subject: [PATCH] 8034035: [parfait] JNI exception pending in jdk/src/macosx/native/sun/awt/LWCToolkit.m Reviewed-by: serb, azvegint --- src/macosx/native/sun/awt/LWCToolkit.m | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/macosx/native/sun/awt/LWCToolkit.m b/src/macosx/native/sun/awt/LWCToolkit.m index 3300e2ddc..5e2dd6cb4 100644 --- a/src/macosx/native/sun/awt/LWCToolkit.m +++ b/src/macosx/native/sun/awt/LWCToolkit.m @@ -200,13 +200,17 @@ Java_sun_lwawt_macosx_LWCToolkit_initIDs gNumberOfButtons = sun_lwawt_macosx_LWCToolkit_BUTTONS; jclass inputEventClazz = (*env)->FindClass(env, "java/awt/event/InputEvent"); + CHECK_NULL(inputEventClazz); jmethodID getButtonDownMasksID = (*env)->GetStaticMethodID(env, inputEventClazz, "getButtonDownMasks", "()[I"); + CHECK_NULL(getButtonDownMasksID); jintArray obj = (jintArray)(*env)->CallStaticObjectMethod(env, inputEventClazz, getButtonDownMasksID); jint * tmp = (*env)->GetIntArrayElements(env, obj, JNI_FALSE); + CHECK_NULL(tmp); gButtonDownMasks = (jint*)SAFE_SIZE_ARRAY_ALLOC(malloc, sizeof(jint), gNumberOfButtons); if (gButtonDownMasks == NULL) { gNumberOfButtons = 0; + (*env)->ReleaseIntArrayElements(env, obj, tmp, JNI_ABORT); JNU_ThrowOutOfMemoryError(env, NULL); return; } @@ -240,7 +244,7 @@ static UInt32 RGB(NSColor *c) { return ((ia & 0xFF) << 24) | ((ir & 0xFF) << 16) | ((ig & 0xFF) << 8) | ((ib & 0xFF) << 0); } -void doLoadNativeColors(JNIEnv *env, jintArray jColors, BOOL useAppleColors) { +BOOL doLoadNativeColors(JNIEnv *env, jintArray jColors, BOOL useAppleColors) { jint len = (*env)->GetArrayLength(env, jColors); UInt32 colorsArray[len]; @@ -254,8 +258,12 @@ void doLoadNativeColors(JNIEnv *env, jintArray jColors, BOOL useAppleColors) { }]; jint *_colors = (*env)->GetPrimitiveArrayCritical(env, jColors, 0); + if (_colors == NULL) { + return NO; + } memcpy(_colors, colors, len * sizeof(UInt32)); (*env)->ReleasePrimitiveArrayCritical(env, jColors, _colors, 0); + return YES; } /** @@ -267,8 +275,9 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_LWCToolkit_loadNativeColors (JNIEnv *env, jobject peer, jintArray jSystemColors, jintArray jAppleColors) { JNF_COCOA_ENTER(env); - doLoadNativeColors(env, jSystemColors, NO); - doLoadNativeColors(env, jAppleColors, YES); + if (doLoadNativeColors(env, jSystemColors, NO)) { + doLoadNativeColors(env, jAppleColors, YES); + } JNF_COCOA_EXIT(env); } -- GitLab