[HB] Fix Extension sanitize()
authorBehdad Esfahbod <behdad@behdad.org>
Tue, 4 Aug 2009 18:27:56 +0000 (14:27 -0400)
committerBehdad Esfahbod <behdad@behdad.org>
Mon, 2 Nov 2009 19:40:29 +0000 (14:40 -0500)
src/hb-ot-layout-gpos-private.hh
src/hb-ot-layout-gsub-private.hh
src/hb-ot-layout-gsubgpos-private.hh

index 3229efc..5648160 100644 (file)
@@ -1525,7 +1525,8 @@ inline bool ExtensionPos::apply (APPLY_ARG_DEF) const
 inline bool ExtensionPos::sanitize (SANITIZE_ARG_DEF)
 {
   return Extension::sanitize (SANITIZE_ARG) &&
-        DECONST_CAST (PosLookupSubTable, get_subtable (), 0).sanitize (SANITIZE_ARG);
+        (&(Extension::get_subtable ()) == &Null(LookupSubTable) ||
+         DECONST_CAST (PosLookupSubTable, get_subtable (), 0).sanitize (SANITIZE_ARG));
 }
 
 static inline bool position_lookup (APPLY_ARG_DEF, unsigned int lookup_index)
index b221f6f..a8977ac 100644 (file)
@@ -862,7 +862,8 @@ inline bool ExtensionSubst::apply (APPLY_ARG_DEF) const
 inline bool ExtensionSubst::sanitize (SANITIZE_ARG_DEF)
 {
   return Extension::sanitize (SANITIZE_ARG) &&
-        DECONST_CAST (SubstLookupSubTable, get_subtable (), 0).sanitize (SANITIZE_ARG);
+        (&(Extension::get_subtable ()) == &Null(LookupSubTable) ||
+         DECONST_CAST (SubstLookupSubTable, get_subtable (), 0).sanitize (SANITIZE_ARG));
 }
 
 static inline bool substitute_lookup (APPLY_ARG_DEF, unsigned int lookup_index)
index ec305e3..4a1ab24 100644 (file)
@@ -769,7 +769,7 @@ struct ExtensionFormat1
 {
   friend struct Extension;
 
-  private:
+  protected:
   inline unsigned int get_type (void) const { return extensionLookupType; }
   inline unsigned int get_offset (void) const { return (extensionOffset[0] << 16) + extensionOffset[1]; }
   inline const LookupSubTable& get_subtable (void) const