--- old/src/java.desktop/windows/native/libfontmanager/fontpath.c 2016-07-21 09:47:52.679966621 -0700 +++ new/src/java.desktop/windows/native/libfontmanager/fontpath.c 2016-07-21 09:47:52.523966623 -0700 @@ -305,8 +305,8 @@ familyLC = (*env)->CallObjectMethod(env, fmi->family, fmi->toLowerCaseMID, fmi->locale); /* Delete the created reference after its usage */ - DeleteLocalReference(env, fmi->family); if ((*env)->ExceptionCheck(env)) { + DeleteLocalReference(env, fmi->family); return 0; } @@ -317,10 +317,12 @@ familyLC); if ((*env)->ExceptionCheck(env)) { /* Delete the created references before return */ + DeleteLocalReference(env, fmi->family); DeleteLocalReference(env, familyLC); return 0; } else if (mapHasKey) { /* Delete the created references before return */ + DeleteLocalReference(env, fmi->family); DeleteLocalReference(env, familyLC); return 1; } @@ -329,6 +331,7 @@ fmi->arrayListClass, fmi->arrayListCtr, 4); if (fmi->list == NULL) { /* Delete the created references before return */ + DeleteLocalReference(env, fmi->family); DeleteLocalReference(env, familyLC); return 0; } @@ -339,6 +342,7 @@ DeleteLocalReference(env, familyLC); if ((*env)->ExceptionCheck(env)) { /* Delete the created reference before return */ + DeleteLocalReference(env, fmi->family); DeleteLocalReference(env, fmi->list); return 0; } @@ -351,6 +355,7 @@ lParam, 0L); /* Delete the created reference after its usage in the enum function */ + DeleteLocalReference(env, fmi->family); DeleteLocalReference(env, fmi->list); return 1; }