src/hb-uniscribe.cc |   15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

New commits:
commit 3216e44feb7b97f44620b51e197425a80a41cdb7
Author: Behdad Esfahbod <[email protected]>
Date:   Mon Dec 23 14:39:23 2013 -0500

    [uniscribe] Fix scratch-buffer accounting

diff --git a/src/hb-uniscribe.cc b/src/hb-uniscribe.cc
index fcb1aa6..905ad5e 100644
--- a/src/hb-uniscribe.cc
+++ b/src/hb-uniscribe.cc
@@ -776,13 +776,14 @@ retry:
     }
   }
 
-  /* All the following types are sized in multiples of sizeof(int). */
-  unsigned int glyphs_size = scratch_size / ((sizeof (WORD) +
-                                             sizeof (SCRIPT_GLYPHPROP) +
-                                             sizeof (int) +
-                                             sizeof (GOFFSET) +
-                                             sizeof (uint32_t))
-                                            / sizeof (int));
+  /* The -2 in the following is to compensate for possible
+   * alignment needed after the WORD array.  sizeof(WORD) == 2. */
+  unsigned int glyphs_size = (scratch_size * sizeof (int) - 2)
+                          / (sizeof (WORD) +
+                             sizeof (SCRIPT_GLYPHPROP) +
+                             sizeof (int) +
+                             sizeof (GOFFSET) +
+                             sizeof (uint32_t));
 
   ALLOCATE_ARRAY (WORD, glyphs, glyphs_size);
   ALLOCATE_ARRAY (SCRIPT_GLYPHPROP, glyph_props, glyphs_size);
_______________________________________________
HarfBuzz mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/harfbuzz

Reply via email to