1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
# HG changeset patch
# User vadim
# Date 1381851333 -3600
# Tue Oct 15 16:35:33 2013 +0100
# Node ID a28b8ce4d90e7d7bc1fab599298831e0d62e171e
# Parent c428e65fa8fd127058ea33ef728391887ea108e6
8013514: Improve stability of cmap class
Reviewed-by: mschoene, prr, bae
diff -r c428e65fa8fd -r a28b8ce4d90e src/share/classes/sun/font/FileFont.java
--- jdk/src/share/classes/sun/font/FileFont.java Thu May 09 11:23:18 2013 -0700
+++ jdk/src/share/classes/sun/font/FileFont.java Tue Oct 15 16:35:33 2013 +0100
@@ -174,7 +174,9 @@
}
}
}
- scaler.dispose();
+ if (scaler != null) {
+ scaler.dispose();
+ }
scaler = FontManager.getNullScaler();
}
diff -r c428e65fa8fd -r a28b8ce4d90e src/share/classes/sun/font/StandardGlyphVector.java
--- jdk/src/share/classes/sun/font/StandardGlyphVector.java Thu May 09 11:23:18 2013 -0700
+++ jdk/src/share/classes/sun/font/StandardGlyphVector.java Tue Oct 15 16:35:33 2013 +0100
@@ -1733,8 +1733,9 @@
tx,
sgv.font.getStyle(),
aa, fm);
-
- FontStrike strike = sgv.font2D.getStrike(desc); // !!! getStrike(desc, false)
+ // Get the strike via the handle. Shouldn't matter
+ // if we've invalidated the font but its an extra precaution.
+ FontStrike strike = sgv.font2D.handle.font2D.getStrike(desc); // !!! getStrike(desc, false)
return new GlyphStrike(sgv, strike, dx, dy);
}
diff -r c428e65fa8fd -r a28b8ce4d90e src/share/classes/sun/font/TrueTypeFont.java
--- jdk/src/share/classes/sun/font/TrueTypeFont.java Thu May 09 11:23:18 2013 -0700
+++ jdk/src/share/classes/sun/font/TrueTypeFont.java Tue Oct 15 16:35:33 2013 +0100
@@ -559,6 +559,9 @@
if (head_Table != null && head_Table.capacity() >= 18) {
ShortBuffer sb = head_Table.asShortBuffer();
upem = sb.get(9) & 0xffff;
+ if (upem < 16 || upem > 16384) {
+ upem = 2048;
+ }
}
setStrikethroughMetrics(os2_Table, upem);
|