--- old/src/java.desktop/unix/native/common/awt/fontpath.c 2017-01-17 12:23:50.169630876 -0800 +++ new/src/java.desktop/unix/native/common/awt/fontpath.c 2017-01-17 12:23:50.033630877 -0800 @@ -1137,6 +1137,7 @@ JNU_CHECK_EXCEPTION(env); (*env)->SetObjectArrayElement(env, cacheDirArray, cnt++, jstr); + (*env)->DeleteLocalRef(env, jstr); } (*FcStrListDone)(cacheDirs); } @@ -1163,10 +1164,12 @@ (jstring)((*env)->GetObjectField(env, fcCompFontObj, fcNameID)); fcName = (*env)->GetStringUTFChars(env, fcNameStr, 0); if (fcName == NULL) { + (*env)->DeleteLocalRef(env, fcNameStr); continue; } pattern = (*FcNameParse)((FcChar8 *)fcName); (*env)->ReleaseStringUTFChars(env, fcNameStr, (const char*)fcName); + (*env)->DeleteLocalRef(env, fcNameStr); if (pattern == NULL) { closeFontConfig(libfontconfig, JNI_FALSE); return; @@ -1326,20 +1329,24 @@ jstr = (*env)->NewStringUTF(env, (const char*)family[j]); if (IS_NULL(jstr)) break; (*env)->SetObjectField(env, fcFont, familyNameID, jstr); + (*env)->DeleteLocalRef(env, jstr); if (file[j] != NULL) { jstr = (*env)->NewStringUTF(env, (const char*)file[j]); if (IS_NULL(jstr)) break; (*env)->SetObjectField(env, fcFont, fontFileID, jstr); + (*env)->DeleteLocalRef(env, jstr); } if (styleStr[j] != NULL) { jstr = (*env)->NewStringUTF(env, (const char*)styleStr[j]); if (IS_NULL(jstr)) break; (*env)->SetObjectField(env, fcFont, styleNameID, jstr); + (*env)->DeleteLocalRef(env, jstr); } if (fullname[j] != NULL) { jstr = (*env)->NewStringUTF(env, (const char*)fullname[j]); if (IS_NULL(jstr)) break; (*env)->SetObjectField(env, fcFont, fullNameID, jstr); + (*env)->DeleteLocalRef(env, jstr); } if (fn==0) { (*env)->SetObjectField(env, fcCompFontObj, @@ -1348,10 +1355,13 @@ if (includeFallbacks) { (*env)->SetObjectArrayElement(env, fcFontArr, fn++,fcFont); } else { + (*env)->DeleteLocalRef(env, fcFont); break; } + (*env)->DeleteLocalRef(env, fcFont); } } + (*env)->DeleteLocalRef(env, fcCompFontObj); (*FcFontSetDestroy)(fontset); (*FcPatternDestroy)(pattern); free(family); --- old/test/java/awt/font/JNICheck/JNICheck.sh 2017-01-17 12:23:50.537630875 -0800 +++ new/test/java/awt/font/JNICheck/JNICheck.sh 2017-01-17 12:23:50.377630875 -0800 @@ -23,7 +23,7 @@ # # # @test -# @bug 6430247 8130507 8020448 +# @bug 6430247 8130507 8020448 8172813 # @summary Tests that there are no JNI warnings. # @compile JNICheck.java # @run shell/timeout=300 JNICheck.sh @@ -49,7 +49,7 @@ fi $JAVA_HOME/bin/java ${TESTVMOPTS} \ - -cp "${CP}" -Xcheck:jni JNICheck > "${CP}"/log.txt + -cp "${CP}" -Xcheck:jni JNICheck | grep -v SIG | grep -v Signal | grep -v CallStatic > "${CP}"/log.txt # any messages logged may indicate a failure. if [ -s "${CP}"/log.txt ]; then