[morx] Break out if buffer gets into error
Was getting stuck not making progress somehow.
This commit is contained in:
parent
df827a6ab8
commit
98ac01d3b3
@ -585,6 +585,8 @@ struct StateTableDriver
|
||||
if (unlikely (!c->transition (this, entry)))
|
||||
break;
|
||||
|
||||
if (unlikely (!buffer->successful)) return;
|
||||
|
||||
last_was_dont_advance = (entry->flags & context_t::DontAdvance) && buffer->max_ops-- > 0;
|
||||
|
||||
state = entry->newState;
|
||||
|
@ -886,6 +886,8 @@ struct Chain
|
||||
|
||||
(void) c->buffer->message (c->font, "end chain subtable %d", c->lookup_index);
|
||||
|
||||
if (unlikely (!c->buffer->successful)) return;
|
||||
|
||||
skip:
|
||||
subtable = &StructAfter<ChainSubtable> (*subtable);
|
||||
c->set_lookup_index (c->lookup_index + 1);
|
||||
@ -942,12 +944,14 @@ struct morx
|
||||
|
||||
inline void apply (hb_aat_apply_context_t *c) const
|
||||
{
|
||||
if (unlikely (!c->buffer->successful)) return;
|
||||
c->set_lookup_index (0);
|
||||
const Chain *chain = &firstChain;
|
||||
unsigned int count = chainCount;
|
||||
for (unsigned int i = 0; i < count; i++)
|
||||
{
|
||||
chain->apply (c);
|
||||
if (unlikely (!c->buffer->successful)) return;
|
||||
chain = &StructAfter<Chain> (*chain);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user