[HarfBuzz] harfbuzz-ng: Branch 'master'

Behdad Esfahbod behdad at kemper.freedesktop.org
Tue May 31 09:33:57 PDT 2011


 src/hb-open-file-private.hh      |    6 +++---
 src/hb-open-type-private.hh      |    2 +-
 src/hb-ot-layout-gdef-private.hh |    6 +++---
 3 files changed, 7 insertions(+), 7 deletions(-)

New commits:
commit 4f28fbdd804fabeec57a98fe267d892ab58b3a6d
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Tue May 31 12:33:11 2011 -0400

    Fix TTC header handling
    
    Also change the Version type to avoid similar bugs in the future.
    
    Reported by Grigori Goronzy.

diff --git a/src/hb-open-file-private.hh b/src/hb-open-file-private.hh
index b65e83f..7d43e46 100644
--- a/src/hb-open-file-private.hh
+++ b/src/hb-open-file-private.hh
@@ -152,7 +152,7 @@ struct TTCHeader
 
   inline unsigned int get_face_count (void) const
   {
-    switch (u.header.version) {
+    switch (u.header.version.major) {
     case 2: /* version 2 is compatible with version 1 */
     case 1: return u.version1.get_face_count ();
     default:return 0;
@@ -160,7 +160,7 @@ struct TTCHeader
   }
   inline const OpenTypeFontFace& get_face (unsigned int i) const
   {
-    switch (u.header.version) {
+    switch (u.header.version.major) {
     case 2: /* version 2 is compatible with version 1 */
     case 1: return u.version1.get_face (i);
     default:return Null(OpenTypeFontFace);
@@ -170,7 +170,7 @@ struct TTCHeader
   inline bool sanitize (hb_sanitize_context_t *c) {
     TRACE_SANITIZE ();
     if (unlikely (!u.header.version.sanitize (c))) return false;
-    switch (u.header.version) {
+    switch (u.header.version.major) {
     case 2: /* version 2 is compatible with version 1 */
     case 1: return u.version1.sanitize (c);
     default:return true;
diff --git a/src/hb-open-type-private.hh b/src/hb-open-type-private.hh
index 4aa47ec..665a260 100644
--- a/src/hb-open-type-private.hh
+++ b/src/hb-open-type-private.hh
@@ -488,7 +488,7 @@ struct CheckSum : ULONG
 
 struct FixedVersion
 {
-  inline operator uint32_t (void) const { return (major << 16) + minor; }
+  inline uint32_t to_int (void) const { return (major << 16) + minor; }
 
   inline bool sanitize (hb_sanitize_context_t *c) {
     TRACE_SANITIZE ();
diff --git a/src/hb-ot-layout-gdef-private.hh b/src/hb-ot-layout-gdef-private.hh
index 77549fa..0fcfe3b 100644
--- a/src/hb-ot-layout-gdef-private.hh
+++ b/src/hb-ot-layout-gdef-private.hh
@@ -360,9 +360,9 @@ struct GDEF
 				      hb_position_t *caret_array /* OUT */) const
   { return (this+ligCaretList).get_lig_carets (font, direction, glyph_id, start_offset, caret_count, caret_array); }
 
-  inline bool has_mark_sets (void) const { return version >= 0x00010002 && markGlyphSetsDef[0] != 0; }
+  inline bool has_mark_sets (void) const { return version.to_int () >= 0x00010002 && markGlyphSetsDef[0] != 0; }
   inline bool mark_set_covers (unsigned int set_index, hb_codepoint_t glyph_id) const
-  { return version >= 0x00010002 && (this+markGlyphSetsDef[0]).covers (set_index, glyph_id); }
+  { return version.to_int () >= 0x00010002 && (this+markGlyphSetsDef[0]).covers (set_index, glyph_id); }
 
   inline bool sanitize (hb_sanitize_context_t *c) {
     TRACE_SANITIZE ();
@@ -371,7 +371,7 @@ struct GDEF
 	&& attachList.sanitize (c, this)
 	&& ligCaretList.sanitize (c, this)
 	&& markAttachClassDef.sanitize (c, this)
-	&& (version < 0x00010002 || markGlyphSetsDef[0].sanitize (c, this));
+	&& (version.to_int () < 0x00010002 || markGlyphSetsDef[0].sanitize (c, this));
   }
 
 



More information about the HarfBuzz mailing list