[cff1] get_sid() move bounds check into each implementation
This commit is contained in:
parent
e1e359b4da
commit
b87f48e948
|
@ -318,8 +318,9 @@ struct Charset0 {
|
||||||
return_trace (c->check_struct (this) && sids[num_glyphs - 1].sanitize (c));
|
return_trace (c->check_struct (this) && sids[num_glyphs - 1].sanitize (c));
|
||||||
}
|
}
|
||||||
|
|
||||||
hb_codepoint_t get_sid (hb_codepoint_t glyph) const
|
hb_codepoint_t get_sid (hb_codepoint_t glyph, unsigned num_glyphs) const
|
||||||
{
|
{
|
||||||
|
if (unlikely (glyph >= num_glyphs)) return 0;
|
||||||
if (glyph == 0)
|
if (glyph == 0)
|
||||||
return 0;
|
return 0;
|
||||||
else
|
else
|
||||||
|
@ -381,8 +382,9 @@ struct Charset1_2 {
|
||||||
return_trace (true);
|
return_trace (true);
|
||||||
}
|
}
|
||||||
|
|
||||||
hb_codepoint_t get_sid (hb_codepoint_t glyph) const
|
hb_codepoint_t get_sid (hb_codepoint_t glyph, unsigned num_glyphs) const
|
||||||
{
|
{
|
||||||
|
if (unlikely (glyph >= num_glyphs)) return 0;
|
||||||
if (glyph == 0) return 0;
|
if (glyph == 0) return 0;
|
||||||
glyph--;
|
glyph--;
|
||||||
for (unsigned int i = 0;; i++)
|
for (unsigned int i = 0;; i++)
|
||||||
|
@ -521,12 +523,11 @@ struct Charset
|
||||||
|
|
||||||
hb_codepoint_t get_sid (hb_codepoint_t glyph, unsigned int num_glyphs) const
|
hb_codepoint_t get_sid (hb_codepoint_t glyph, unsigned int num_glyphs) const
|
||||||
{
|
{
|
||||||
if (unlikely (glyph >= num_glyphs)) return 0;
|
|
||||||
switch (format)
|
switch (format)
|
||||||
{
|
{
|
||||||
case 0: return u.format0.get_sid (glyph);
|
case 0: return u.format0.get_sid (glyph, num_glyphs);
|
||||||
case 1: return u.format1.get_sid (glyph);
|
case 1: return u.format1.get_sid (glyph, num_glyphs);
|
||||||
case 2: return u.format2.get_sid (glyph);
|
case 2: return u.format2.get_sid (glyph, num_glyphs);
|
||||||
default:return 0;
|
default:return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue