[otlayout] Fix up recent Context matching change
Commit 6b65a76b40
. "end" was becoming
negative. Was trigerred by Lohit-Kannada 2.5.3 and the sequence:
U+0CB0,U+200D,U+0CBE,U+0CB7,U+0CCD,U+0C9F,U+0CCD,U+0CB0,U+0C97,U+0CB3
Two glyphs were being duplicated.
This commit is contained in:
parent
1a7de1ba98
commit
da72042c52
|
@ -365,8 +365,12 @@ hb_buffer_t::move_to (unsigned int i)
|
||||||
{
|
{
|
||||||
assert (i <= len);
|
assert (i <= len);
|
||||||
idx = i;
|
idx = i;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
else if (out_len < i)
|
|
||||||
|
assert (i <= out_len + (len - idx));
|
||||||
|
|
||||||
|
if (out_len < i)
|
||||||
{
|
{
|
||||||
unsigned int count = i - out_len;
|
unsigned int count = i - out_len;
|
||||||
if (unlikely (!make_room_for (count, count))) return false;
|
if (unlikely (!make_room_for (count, count))) return false;
|
||||||
|
@ -388,6 +392,7 @@ hb_buffer_t::move_to (unsigned int i)
|
||||||
out_len -= count;
|
out_len -= count;
|
||||||
memmove (info + idx, out_info + out_len, count * sizeof (out_info[0]));
|
memmove (info + idx, out_info + out_len, count * sizeof (out_info[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1031,7 +1031,8 @@ static inline bool apply_lookup (hb_apply_context_t *c,
|
||||||
|
|
||||||
/* Recursed lookup changed buffer len. Adjust. */
|
/* Recursed lookup changed buffer len. Adjust. */
|
||||||
|
|
||||||
end += delta;
|
/* end can't go back past the current match position. */
|
||||||
|
end = MAX ((int) match_positions[idx] + 1, int (end) + delta);
|
||||||
|
|
||||||
unsigned int next = idx + 1; /* next now is the position after the recursed lookup. */
|
unsigned int next = idx + 1; /* next now is the position after the recursed lookup. */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue