summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@behdad.org>2009-08-04 14:42:46 -0400
committerBehdad Esfahbod <behdad@behdad.org>2009-08-04 14:42:46 -0400
commitc436b687c4d9ba59d0badbd8edb37c936cc3bcc9 (patch)
tree6ca388d16c8f78de11f7d670691b0653d69ae938
parent7e7f9f5a7f6aef9bacd9782b943883e127aae49b (diff)
downloadpango-c436b687c4d9ba59d0badbd8edb37c936cc3bcc9.tar.gz
[HB] Tag sanitize()
-rw-r--r--pango/opentype/hb-open-types-private.hh8
-rw-r--r--pango/opentype/hb-ot-layout-common-private.hh6
2 files changed, 9 insertions, 5 deletions
diff --git a/pango/opentype/hb-open-types-private.hh b/pango/opentype/hb-open-types-private.hh
index 8e325d73..d923b884 100644
--- a/pango/opentype/hb-open-types-private.hh
+++ b/pango/opentype/hb-open-types-private.hh
@@ -282,6 +282,14 @@ struct Tag : ULONG
/* What the char* converters return is NOT nul-terminated. Print using "%.4s" */
inline operator const char* (void) const { return CONST_CHARP(this); }
inline operator char* (void) { return CHARP(this); }
+
+ inline bool sanitize (SANITIZE_ARG_DEF) {
+ /* Note: Only accept ASCII-visible tags (mind DEL)
+ * This is one of the few times (only time?) we check
+ * for data integrity, as opposed o just boundary checks
+ */
+ return SANITIZE_SELF () && (((uint32_t) *this) & 0x80808080) == 0;
+ }
};
ASSERT_SIZE (Tag, 4);
#define _NULL_TAG_INIT {' ', ' ', ' ', ' '}
diff --git a/pango/opentype/hb-ot-layout-common-private.hh b/pango/opentype/hb-ot-layout-common-private.hh
index 8e3c4f88..5f7d4394 100644
--- a/pango/opentype/hb-ot-layout-common-private.hh
+++ b/pango/opentype/hb-ot-layout-common-private.hh
@@ -47,11 +47,7 @@ template <typename Type>
struct Record
{
inline bool sanitize (SANITIZE_ARG_DEF, const void *base) {
- /* Note: Only accept ASCII-visible tags (mind DEL)
- * This is one of the few times (only time?) we check
- * for data integrity, as opposed o just boundary checks
- */
- return (tag & 0x80808080) == 0 && offset.sanitize (SANITIZE_ARG, base);
+ return SANITIZE (tag) == 0 && SANITIZE_BASE (offset, base);
}
Tag tag; /* 4-byte Tag identifier */