Fail sanitize on major version mismatch
authorBehdad Esfahbod <behdad@behdad.org>
Thu, 22 Apr 2010 18:15:11 +0000 (14:15 -0400)
committerBehdad Esfahbod <behdad@behdad.org>
Thu, 22 Apr 2010 18:21:17 +0000 (14:21 -0400)
We handle major-version differences via get_for_data(), so sanitize
should never see a major version mismatch.

src/hb-open-file-private.hh
src/hb-ot-layout-gdef-private.hh
src/hb-ot-layout-gsubgpos-private.hh

index 91854f8..10de334 100644 (file)
@@ -139,8 +139,8 @@ struct TTCHeader
   inline bool sanitize (SANITIZE_ARG_DEF) {
     TRACE_SANITIZE ();
     if (!SANITIZE (version)) return false;
-    if (version.major < 1 || version.major > 2) return true;
-    return table.sanitize (SANITIZE_ARG, CharP(this), CharP(this));
+    if (HB_UNLIKELY (version.major < 1 || version.major > 2)) return false;
+    return HB_LIKELY (table.sanitize (SANITIZE_ARG, CharP(this), CharP(this)));
   }
 
   private:
index 4f6c1d9..4de5740 100644 (file)
@@ -346,7 +346,7 @@ struct GDEF
   inline bool sanitize (SANITIZE_ARG_DEF) {
     TRACE_SANITIZE ();
     if (!SANITIZE (version)) return false;
-    if (version.major != 1) return true;
+    if (HB_UNLIKELY (version.major != 1)) return false;
     return SANITIZE_THIS2 (glyphClassDef, attachList) &&
           SANITIZE_THIS2 (ligCaretList, markAttachClassDef) &&
           (version < 0x00010002 || SANITIZE_THIS (markGlyphSetsDef[0]));
index c5639bb..2856d34 100644 (file)
@@ -937,7 +937,7 @@ struct GSUBGPOS
   inline bool sanitize (SANITIZE_ARG_DEF) {
     TRACE_SANITIZE ();
     if (!SANITIZE (version)) return false;
-    if (version.major != 1) return true;
+    if (HB_UNLIKELY (version.major != 1)) return false;
     return SANITIZE_THIS3 (scriptList, featureList, lookupList);
   }