From e0c6480cd3c8f033bad36711701d71d30269d7b3 Mon Sep 17 00:00:00 2001 From: Phil Race Date: Mon, 21 Oct 2024 18:23:13 +0000 Subject: [PATCH] 8338570: sun/font/HBShaper - mismatch in return type of FFM upcall function description and native invocation Reviewed-by: serb, aivanov --- src/java.desktop/share/classes/sun/font/HBShaper.java | 3 +-- .../share/native/libfontmanager/HBShaper_Panama.c | 7 +++---- src/java.desktop/share/native/libfontmanager/hb-jdk-p.h | 4 ++-- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/java.desktop/share/classes/sun/font/HBShaper.java b/src/java.desktop/share/classes/sun/font/HBShaper.java index 70e95cdc27b..98c40035104 100644 --- a/src/java.desktop/share/classes/sun/font/HBShaper.java +++ b/src/java.desktop/share/classes/sun/font/HBShaper.java @@ -187,7 +187,6 @@ public class HBShaper { dispose_face_handle = tmp3; FunctionDescriptor shapeDesc = FunctionDescriptor.ofVoid( - //JAVA_INT, // return type JAVA_FLOAT, // ptSize ADDRESS, // matrix ADDRESS, // face @@ -470,7 +469,7 @@ public class HBShaper { MemorySegment matrix = arena.allocateFrom(JAVA_FLOAT, mat); MemorySegment chars = arena.allocateFrom(JAVA_CHAR, text); - /*int ret =*/ jdk_hb_shape_handle.invokeExact( + jdk_hb_shape_handle.invokeExact( ptSize, matrix, hbface, chars, text.length, script, offset, limit, baseIndex, startX, startY, flags, slot, diff --git a/src/java.desktop/share/native/libfontmanager/HBShaper_Panama.c b/src/java.desktop/share/native/libfontmanager/HBShaper_Panama.c index 94289db7046..699df947462 100644 --- a/src/java.desktop/share/native/libfontmanager/HBShaper_Panama.c +++ b/src/java.desktop/share/native/libfontmanager/HBShaper_Panama.c @@ -63,7 +63,7 @@ static float euclidianDistance(float a, float b) #define TYPO_LIGA 0x00000002 #define TYPO_RTL 0x80000000 -JDKEXPORT int jdk_hb_shape( +JDKEXPORT void jdk_hb_shape( float ptSize, float *matrix, void* pFace, @@ -92,7 +92,6 @@ JDKEXPORT int jdk_hb_shape( int featureCount = 0; char* kern = (flags & TYPO_KERN) ? "kern" : "-kern"; char* liga = (flags & TYPO_LIGA) ? "liga" : "-liga"; - int ret; unsigned int buflen; float devScale = 1.0f; @@ -132,7 +131,7 @@ JDKEXPORT int jdk_hb_shape( glyphInfo = hb_buffer_get_glyph_infos(buffer, 0); glyphPos = hb_buffer_get_glyph_positions(buffer, &buflen); - ret = (*store_layout_results_fn) + (*store_layout_results_fn) (slot, baseIndex, offset, startX, startY, devScale, charCount, glyphCount, glyphInfo, glyphPos); @@ -141,5 +140,5 @@ JDKEXPORT int jdk_hb_shape( if (features != NULL) { free(features); } - return ret; + return; } diff --git a/src/java.desktop/share/native/libfontmanager/hb-jdk-p.h b/src/java.desktop/share/native/libfontmanager/hb-jdk-p.h index 58d39816b75..c022e964e77 100644 --- a/src/java.desktop/share/native/libfontmanager/hb-jdk-p.h +++ b/src/java.desktop/share/native/libfontmanager/hb-jdk-p.h @@ -56,13 +56,13 @@ hb_font_t* jdk_font_create_hbp( hb_font_funcs_t* font_funcs); -typedef int (*store_layoutdata_func_t) +typedef void (*store_layoutdata_func_t) (int slot, int baseIndex, int offset, float startX, float startY, float devScale, int charCount, int glyphCount, hb_glyph_info_t *glyphInfo, hb_glyph_position_t *glyphPos); -JDKEXPORT int jdk_hb_shape( +JDKEXPORT void jdk_hb_shape( float ptSize, float *matrix,