提交 0484b9e8 编写于 作者: B bae

7152608: [macosx] Crash in liblwawt.dylib in AccelGlyphCache_RemoveCellInfo

Reviewed-by: jgodinez, ant
上级 f996d2b2
......@@ -500,7 +500,10 @@ public class CStrike extends FontStrike {
final Iterator<Long> i = generalCache.values().iterator();
while (i.hasNext()) {
final long longValue = i.next().longValue();
if (longValue != -1 && longValue != 0) StrikeCache.freeLongPointer(longValue);
if (longValue != -1 && longValue != 0) {
removeGlyphInfoFromCache(longValue);
StrikeCache.freeLongPointer(longValue);
}
}
}
......@@ -512,7 +515,10 @@ public class CStrike extends FontStrike {
private static void disposeLongArray(final long[] longArray) {
for (int i = 0; i < longArray.length; i++) {
final long ptr = longArray[i];
if (ptr != 0 && ptr != -1) StrikeCache.freeLongPointer(ptr); // free's the native struct pointer
if (ptr != 0 && ptr != -1) {
removeGlyphInfoFromCache(ptr);
StrikeCache.freeLongPointer(ptr); // free's the native struct pointer
}
}
}
......
......@@ -85,4 +85,6 @@ class CStrikeDisposer extends FontStrikeDisposer {
}
private native void freeNativeScalerContext(long pContext);
protected static native void removeGlyphInfoFromCache(long glyphInfo);
}
......@@ -27,11 +27,13 @@
#import "java_awt_geom_PathIterator.h"
#import "sun_awt_SunHints.h"
#import "sun_font_CStrike.h"
#import "sun_font_CStrikeDisposer.h"
#import "CGGlyphImages.h"
#import "CGGlyphOutlines.h"
#import "AWTStrike.h"
#import "CoreTextSupport.h"
//#import "jni_util.h"
#include "fontscalerdefs.h"
/* Use THIS_FILE when it is available. */
#ifndef THIS_FILE
......@@ -423,3 +425,19 @@ JNF_COCOA_EXIT(env);
return metrics;
}
extern void AccelGlyphCache_RemoveAllInfos(GlyphInfo* glyph);
/*
* Class: sun_font_CStrikeDisposer
* Method: removeGlyphInfoFromCache
* Signature: (J)V
*/
JNIEXPORT void JNICALL Java_sun_font_CStrikeDisposer_removeGlyphInfoFromCache
(JNIEnv *env, jclass cls, jlong glyphInfo)
{
JNF_COCOA_ENTER(env);
AccelGlyphCache_RemoveAllCellInfos((GlyphInfo*)jlong_to_ptr(glyphInfo));
JNF_COCOA_EXIT(env);
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册