提交 ca5e5a49 编写于 作者: B Behdad Esfahbod

Port Coverage::Iter off hb_auto_t<>

上级 3a4e5dd4
...@@ -1108,8 +1108,7 @@ struct Coverage ...@@ -1108,8 +1108,7 @@ struct Coverage
struct Iter struct Iter
{ {
Iter (void) : format (0), u () {}; inline Iter (const Coverage &c_)
inline void init (const Coverage &c_)
{ {
format = c_.u.format; format = c_.u.format;
switch (format) switch (format)
...@@ -1119,7 +1118,6 @@ struct Coverage ...@@ -1119,7 +1118,6 @@ struct Coverage
default: return; default: return;
} }
} }
inline void fini (void) {}
inline bool more (void) inline bool more (void)
{ {
switch (format) switch (format)
......
...@@ -719,7 +719,7 @@ struct PairPosFormat1 ...@@ -719,7 +719,7 @@ struct PairPosFormat1
inline bool intersects (const hb_set_t *glyphs) const inline bool intersects (const hb_set_t *glyphs) const
{ {
unsigned int count = pairSet.len; unsigned int count = pairSet.len;
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ()) for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
{ {
if (unlikely (iter.get_coverage () >= count)) if (unlikely (iter.get_coverage () >= count))
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */ break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
......
...@@ -48,7 +48,7 @@ struct SingleSubstFormat1 ...@@ -48,7 +48,7 @@ struct SingleSubstFormat1
inline void closure (hb_closure_context_t *c) const inline void closure (hb_closure_context_t *c) const
{ {
TRACE_CLOSURE (this); TRACE_CLOSURE (this);
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ()) for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
{ {
/* TODO Switch to range-based API to work around malicious fonts. /* TODO Switch to range-based API to work around malicious fonts.
* https://github.com/harfbuzz/harfbuzz/issues/363 */ * https://github.com/harfbuzz/harfbuzz/issues/363 */
...@@ -62,7 +62,7 @@ struct SingleSubstFormat1 ...@@ -62,7 +62,7 @@ struct SingleSubstFormat1
{ {
TRACE_COLLECT_GLYPHS (this); TRACE_COLLECT_GLYPHS (this);
if (unlikely (!(this+coverage).add_coverage (c->input))) return; if (unlikely (!(this+coverage).add_coverage (c->input))) return;
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ()) for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
{ {
/* TODO Switch to range-based API to work around malicious fonts. /* TODO Switch to range-based API to work around malicious fonts.
* https://github.com/harfbuzz/harfbuzz/issues/363 */ * https://github.com/harfbuzz/harfbuzz/issues/363 */
...@@ -113,7 +113,7 @@ struct SingleSubstFormat1 ...@@ -113,7 +113,7 @@ struct SingleSubstFormat1
hb_vector_t<GlyphID> from; hb_vector_t<GlyphID> from;
hb_vector_t<GlyphID> to; hb_vector_t<GlyphID> to;
hb_codepoint_t delta = deltaGlyphID; hb_codepoint_t delta = deltaGlyphID;
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ()) for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
{ {
if (!c->plan->glyphset->has (iter.get_glyph ())) if (!c->plan->glyphset->has (iter.get_glyph ()))
continue; continue;
...@@ -157,7 +157,7 @@ struct SingleSubstFormat2 ...@@ -157,7 +157,7 @@ struct SingleSubstFormat2
{ {
TRACE_CLOSURE (this); TRACE_CLOSURE (this);
unsigned int count = substitute.len; unsigned int count = substitute.len;
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ()) for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
{ {
if (unlikely (iter.get_coverage () >= count)) if (unlikely (iter.get_coverage () >= count))
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */ break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
...@@ -171,7 +171,7 @@ struct SingleSubstFormat2 ...@@ -171,7 +171,7 @@ struct SingleSubstFormat2
TRACE_COLLECT_GLYPHS (this); TRACE_COLLECT_GLYPHS (this);
if (unlikely (!(this+coverage).add_coverage (c->input))) return; if (unlikely (!(this+coverage).add_coverage (c->input))) return;
unsigned int count = substitute.len; unsigned int count = substitute.len;
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ()) for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
{ {
if (unlikely (iter.get_coverage () >= count)) if (unlikely (iter.get_coverage () >= count))
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */ break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
...@@ -218,7 +218,7 @@ struct SingleSubstFormat2 ...@@ -218,7 +218,7 @@ struct SingleSubstFormat2
TRACE_SUBSET (this); TRACE_SUBSET (this);
hb_vector_t<GlyphID> from; hb_vector_t<GlyphID> from;
hb_vector_t<GlyphID> to; hb_vector_t<GlyphID> to;
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ()) for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
{ {
if (!c->plan->glyphset->has (iter.get_glyph ())) if (!c->plan->glyphset->has (iter.get_glyph ()))
continue; continue;
...@@ -395,7 +395,7 @@ struct MultipleSubstFormat1 ...@@ -395,7 +395,7 @@ struct MultipleSubstFormat1
{ {
TRACE_CLOSURE (this); TRACE_CLOSURE (this);
unsigned int count = sequence.len; unsigned int count = sequence.len;
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ()) for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
{ {
if (unlikely (iter.get_coverage () >= count)) if (unlikely (iter.get_coverage () >= count))
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */ break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
...@@ -585,7 +585,7 @@ struct AlternateSubstFormat1 ...@@ -585,7 +585,7 @@ struct AlternateSubstFormat1
{ {
TRACE_CLOSURE (this); TRACE_CLOSURE (this);
unsigned int count = alternateSet.len; unsigned int count = alternateSet.len;
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ()) for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
{ {
if (unlikely (iter.get_coverage () >= count)) if (unlikely (iter.get_coverage () >= count))
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */ break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
...@@ -599,7 +599,7 @@ struct AlternateSubstFormat1 ...@@ -599,7 +599,7 @@ struct AlternateSubstFormat1
TRACE_COLLECT_GLYPHS (this); TRACE_COLLECT_GLYPHS (this);
if (unlikely (!(this+coverage).add_coverage (c->input))) return; if (unlikely (!(this+coverage).add_coverage (c->input))) return;
unsigned int count = alternateSet.len; unsigned int count = alternateSet.len;
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ()) for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
{ {
if (unlikely (iter.get_coverage () >= count)) if (unlikely (iter.get_coverage () >= count))
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */ break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
...@@ -906,7 +906,7 @@ struct LigatureSubstFormat1 ...@@ -906,7 +906,7 @@ struct LigatureSubstFormat1
inline bool intersects (const hb_set_t *glyphs) const inline bool intersects (const hb_set_t *glyphs) const
{ {
unsigned int count = ligatureSet.len; unsigned int count = ligatureSet.len;
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ()) for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
{ {
if (unlikely (iter.get_coverage () >= count)) if (unlikely (iter.get_coverage () >= count))
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */ break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
...@@ -921,7 +921,7 @@ struct LigatureSubstFormat1 ...@@ -921,7 +921,7 @@ struct LigatureSubstFormat1
{ {
TRACE_CLOSURE (this); TRACE_CLOSURE (this);
unsigned int count = ligatureSet.len; unsigned int count = ligatureSet.len;
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ()) for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
{ {
if (unlikely (iter.get_coverage () >= count)) if (unlikely (iter.get_coverage () >= count))
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */ break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
...@@ -935,7 +935,7 @@ struct LigatureSubstFormat1 ...@@ -935,7 +935,7 @@ struct LigatureSubstFormat1
TRACE_COLLECT_GLYPHS (this); TRACE_COLLECT_GLYPHS (this);
if (unlikely (!(this+coverage).add_coverage (c->input))) return; if (unlikely (!(this+coverage).add_coverage (c->input))) return;
unsigned int count = ligatureSet.len; unsigned int count = ligatureSet.len;
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ()) for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
{ {
if (unlikely (iter.get_coverage () >= count)) if (unlikely (iter.get_coverage () >= count))
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */ break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
...@@ -1114,7 +1114,7 @@ struct ReverseChainSingleSubstFormat1 ...@@ -1114,7 +1114,7 @@ struct ReverseChainSingleSubstFormat1
const ArrayOf<GlyphID> &substitute = StructAfter<ArrayOf<GlyphID> > (lookahead); const ArrayOf<GlyphID> &substitute = StructAfter<ArrayOf<GlyphID> > (lookahead);
count = substitute.len; count = substitute.len;
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ()) for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
{ {
if (unlikely (iter.get_coverage () >= count)) if (unlikely (iter.get_coverage () >= count))
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */ break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
......
...@@ -1441,7 +1441,7 @@ struct ContextFormat1 ...@@ -1441,7 +1441,7 @@ struct ContextFormat1
}; };
unsigned int count = ruleSet.len; unsigned int count = ruleSet.len;
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ()) for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
{ {
if (unlikely (iter.get_coverage () >= count)) if (unlikely (iter.get_coverage () >= count))
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */ break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
...@@ -1462,7 +1462,7 @@ struct ContextFormat1 ...@@ -1462,7 +1462,7 @@ struct ContextFormat1
}; };
unsigned int count = ruleSet.len; unsigned int count = ruleSet.len;
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ()) for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
{ {
if (unlikely (iter.get_coverage () >= count)) if (unlikely (iter.get_coverage () >= count))
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */ break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
...@@ -2105,7 +2105,7 @@ struct ChainContextFormat1 ...@@ -2105,7 +2105,7 @@ struct ChainContextFormat1
}; };
unsigned int count = ruleSet.len; unsigned int count = ruleSet.len;
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ()) for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
{ {
if (unlikely (iter.get_coverage () >= count)) if (unlikely (iter.get_coverage () >= count))
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */ break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
...@@ -2126,7 +2126,7 @@ struct ChainContextFormat1 ...@@ -2126,7 +2126,7 @@ struct ChainContextFormat1
}; };
unsigned int count = ruleSet.len; unsigned int count = ruleSet.len;
for (hb_auto_t<Coverage::Iter> iter (this+coverage); iter.more (); iter.next ()) for (Coverage::Iter iter (this+coverage); iter.more (); iter.next ())
{ {
if (unlikely (iter.get_coverage () >= count)) if (unlikely (iter.get_coverage () >= count))
break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */ break; /* Work around malicious fonts. https://github.com/harfbuzz/harfbuzz/issues/363 */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册