bug 714067 - correction in ligature indexing when combining marks are present. r=behdad a=akeybl THUNDERBIRD_10_0b4_BUILD1 THUNDERBIRD_10_0b4_RELEASE
authorJonathan Kew <jfkthame@gmail.com>
Sun, 15 Jan 2012 08:52:00 +0000
changeset 81602 0316db6b614b83c8b8014f43d2ba84b53180b545
parent 81601 d53d327daa8d77784ba53185a1724a45e379e5a2
child 81603 a74f7998e2ea25759ec4e0ca79f0ef0e40b38a11
child 81605 11d741e4641cc2213ab70b8bd8c0180c2e10ffe4
child 81608 52b82032a40bb6c73e485ed8d9c0d0efdb64dfab
child 81613 a02b2c63e8d967f2b80d7227e3a9e808351fe06b
push id1
push usersledru@mozilla.com
push dateThu, 04 Dec 2014 17:57:20 +0000
reviewersbehdad, akeybl
bugs714067
milestone10.0
bug 714067 - correction in ligature indexing when combining marks are present. r=behdad a=akeybl
gfx/harfbuzz/src/hb-ot-layout-gsub-private.hh
--- a/gfx/harfbuzz/src/hb-ot-layout-gsub-private.hh
+++ b/gfx/harfbuzz/src/hb-ot-layout-gsub-private.hh
@@ -371,19 +371,19 @@ struct Ligature
     if (first_was_mark && found_non_mark)
       c->guess_glyph_class (HB_OT_LAYOUT_GLYPH_CLASS_LIGATURE);
 
     /* Allocate new ligature id */
     unsigned int lig_id = allocate_lig_id (c->buffer);
     c->buffer->info[c->buffer->i].lig_comp() = 0;
     c->buffer->info[c->buffer->i].lig_id() = lig_id;
 
-    if (j == c->buffer->i + i) /* No input glyphs skipped */
+    if (j < c->buffer->i + count) /* No input glyphs skipped */
     {
-      c->replace_glyphs_be16 (i, 1, (const uint16_t *) &ligGlyph);
+      c->replace_glyphs_be16 (count, 1, (const uint16_t *) &ligGlyph);
     }
     else
     {
       c->replace_glyph (ligGlyph);
 
       /* Now we must do a second loop to copy the skipped glyphs to
 	 `out' and assign component values to it.  We start with the
 	 glyph after the first component.  Glyphs between component