diff --git a/src/hb-aat-layout-morx-table.hh b/src/hb-aat-layout-morx-table.hh index c58e6744d..85f1f5794 100644 --- a/src/hb-aat-layout-morx-table.hh +++ b/src/hb-aat-layout-morx-table.hh @@ -592,6 +592,7 @@ struct InsertionSubtable hb_aat_apply_context_t *c_) : ret (false), c (c_), + mark_set (false), mark (0), insertionAction (table+table->insertionAction) {} @@ -607,7 +608,7 @@ struct InsertionSubtable hb_buffer_t *buffer = driver->buffer; unsigned int flags = entry->flags; - if (entry->data.markedInsertIndex != 0xFFFF) + if (entry->data.markedInsertIndex != 0xFFFF && mark_set) { unsigned int count = (flags & MarkedInsertCount); unsigned int start = entry->data.markedInsertIndex; @@ -668,7 +669,10 @@ struct InsertionSubtable } if (flags & SetMark) + { + mark_set = true; mark = buffer->out_len; + } return true; } @@ -677,6 +681,7 @@ struct InsertionSubtable bool ret; private: hb_aat_apply_context_t *c; + bool mark_set; unsigned int mark; const UnsizedArrayOf &insertionAction; };