< prev index next >
src/java.desktop/share/native/libfontmanager/freetypeScaler.c
Print this page
rev 56631 : 8232381: add result NULL-checking to freetypeScaler.c
*** 671,684 ****
jlong image = Java_sun_font_FreetypeFontScaler_getGlyphImageNative(
env, scaler, font2D,
pScalerContext, pScaler, glyphCode);
info = (GlyphInfo*) jlong_to_ptr(image);
(*env)->SetFloatField(env, metrics, sunFontIDs.xFID, info->advanceX);
(*env)->SetFloatField(env, metrics, sunFontIDs.yFID, info->advanceY);
-
free(info);
}
static GlyphInfo* getNullGlyphImage() {
GlyphInfo *glyphInfo = (GlyphInfo*) calloc(1, sizeof(GlyphInfo));
--- 671,689 ----
jlong image = Java_sun_font_FreetypeFontScaler_getGlyphImageNative(
env, scaler, font2D,
pScalerContext, pScaler, glyphCode);
info = (GlyphInfo*) jlong_to_ptr(image);
+ if (info != NULL) {
(*env)->SetFloatField(env, metrics, sunFontIDs.xFID, info->advanceX);
(*env)->SetFloatField(env, metrics, sunFontIDs.yFID, info->advanceY);
free(info);
+ } else {
+ jfloat advanceDefault = 0.0f;
+ (*env)->SetFloatField(env, metrics, sunFontIDs.xFID, advanceDefault);
+ (*env)->SetFloatField(env, metrics, sunFontIDs.yFID, advanceDefault);
+ }
}
static GlyphInfo* getNullGlyphImage() {
GlyphInfo *glyphInfo = (GlyphInfo*) calloc(1, sizeof(GlyphInfo));
< prev index next >