From be7dab7c9a06ae1441aeaa6705ea629657f62235 Mon Sep 17 00:00:00 2001 From: Phil Race Date: Thu, 28 Jul 2016 09:53:08 -0700 Subject: [PATCH 1/2] 8148477: Native memory leak in font layout subsystem Reviewed-by: serb --- .../java.desktop/share/native/libfontmanager/HBShaper.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/jdk/src/java.desktop/share/native/libfontmanager/HBShaper.c b/jdk/src/java.desktop/share/native/libfontmanager/HBShaper.c index 00c6ee1fa44..485c42a7b96 100644 --- a/jdk/src/java.desktop/share/native/libfontmanager/HBShaper.c +++ b/jdk/src/java.desktop/share/native/libfontmanager/HBShaper.c @@ -278,6 +278,12 @@ JNIEXPORT jboolean JNICALL Java_sun_font_SunLayoutEngine_shape hb_buffer_set_direction(buffer, direction); chars = (*env)->GetCharArrayElements(env, text, NULL); + if ((*env)->ExceptionCheck(env)) { + hb_buffer_destroy(buffer); + hb_font_destroy(hbfont); + free((void*)jdkFontInfo); + return JNI_FALSE; + } len = (*env)->GetArrayLength(env, text); hb_buffer_add_utf16(buffer, chars, len, offset, limit-offset); @@ -309,6 +315,7 @@ JNIEXPORT jboolean JNICALL Java_sun_font_SunLayoutEngine_shape hb_font_destroy(hbfont); free((void*)jdkFontInfo); if (features != NULL) free(features); + (*env)->ReleaseCharArrayElements(env, text, chars, JNI_ABORT); return JNI_TRUE; } From 7166a167e12103401a0366a6fa595882f4bddfa4 Mon Sep 17 00:00:00 2001 From: Phil Race Date: Thu, 28 Jul 2016 09:54:55 -0700 Subject: [PATCH 2/2] 8056210: Move libawt file to windows directory Reviewed-by: serb, psadhukhan --- jdk/make/lib/Awt2dLibraries.gmk | 2 -- .../java2d => windows/native/libawt/java2d/d3d}/ShaderList.c | 2 +- .../java2d => windows/native/libawt/java2d/d3d}/ShaderList.h | 0 3 files changed, 1 insertion(+), 3 deletions(-) rename jdk/src/java.desktop/{share/native/libawt/java2d => windows/native/libawt/java2d/d3d}/ShaderList.c (98%) rename jdk/src/java.desktop/{share/native/libawt/java2d => windows/native/libawt/java2d/d3d}/ShaderList.h (100%) diff --git a/jdk/make/lib/Awt2dLibraries.gmk b/jdk/make/lib/Awt2dLibraries.gmk index 04984ef391c..fa7d8725eeb 100644 --- a/jdk/make/lib/Awt2dLibraries.gmk +++ b/jdk/make/lib/Awt2dLibraries.gmk @@ -147,8 +147,6 @@ endif ifeq ($(OPENJDK_TARGET_OS), windows) LIBAWT_DIRS += $(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/utility -else - LIBAWT_EXFILES := java2d/ShaderList.c endif ifneq ($(filter $(OPENJDK_TARGET_OS), solaris linux macosx aix), ) diff --git a/jdk/src/java.desktop/share/native/libawt/java2d/ShaderList.c b/jdk/src/java.desktop/windows/native/libawt/java2d/d3d/ShaderList.c similarity index 98% rename from jdk/src/java.desktop/share/native/libawt/java2d/ShaderList.c rename to jdk/src/java.desktop/windows/native/libawt/java2d/d3d/ShaderList.c index d7f69f754fe..e129bcd2a85 100644 --- a/jdk/src/java.desktop/share/native/libawt/java2d/ShaderList.c +++ b/jdk/src/java.desktop/windows/native/libawt/java2d/d3d/ShaderList.c @@ -49,7 +49,7 @@ ShaderList_AddProgram(ShaderList *programList, info = (ShaderInfo *)malloc(sizeof(ShaderInfo)); if (info == NULL) { J2dTraceLn(J2D_TRACE_ERROR, - "OGLContext_AddProgram: could not allocate ShaderInfo"); + "D3DContext_AddProgram: could not allocate ShaderInfo"); return; } diff --git a/jdk/src/java.desktop/share/native/libawt/java2d/ShaderList.h b/jdk/src/java.desktop/windows/native/libawt/java2d/d3d/ShaderList.h similarity index 100% rename from jdk/src/java.desktop/share/native/libawt/java2d/ShaderList.h rename to jdk/src/java.desktop/windows/native/libawt/java2d/d3d/ShaderList.h