summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@behdad.org>2009-08-04 10:23:01 -0400
committerBehdad Esfahbod <behdad@behdad.org>2009-08-04 10:23:01 -0400
commita501ac401398cc85d2c9695bb2fc41dc4f7efb39 (patch)
tree54de3191c6acbb5691f79e4a1069f2fc8afc6039
parent477a991e5e89462fc186cc1d797af7d05ee9fd89 (diff)
downloadpango-a501ac401398cc85d2c9695bb2fc41dc4f7efb39.tar.gz
[HB] Simplify indirect sanitize()
-rw-r--r--pango/opentype/hb-open-types-private.hh52
-rw-r--r--pango/opentype/hb-ot-layout-common-private.hh11
2 files changed, 26 insertions, 37 deletions
diff --git a/pango/opentype/hb-open-types-private.hh b/pango/opentype/hb-open-types-private.hh
index b3d7541a..198c0ad2 100644
--- a/pango/opentype/hb-open-types-private.hh
+++ b/pango/opentype/hb-open-types-private.hh
@@ -383,6 +383,13 @@ struct ArrayOf
return false;
*/
}
+ inline bool sanitize (SANITIZE_ARG_DEF, const char *base) {
+ if (!(SANITIZE (len) && SANITIZE_GET_SIZE())) return false;
+ unsigned int count = len;
+ for (unsigned int i = 0; i < count; i++)
+ if (!SANITIZE_THIS (array[i]))
+ return false;
+ }
USHORT len;
Type array[];
@@ -410,6 +417,13 @@ struct HeadlessArrayOf
return false;
*/
}
+ inline bool sanitize (SANITIZE_ARG_DEF, const char *base) {
+ if (!(SANITIZE (len) && SANITIZE_GET_SIZE())) return false;
+ unsigned int count = len;
+ for (unsigned int i = 0; i < count; i++)
+ if (!SANITIZE_THIS (array[i]))
+ return false;
+ }
USHORT len;
Type array[];
@@ -436,6 +450,13 @@ struct LongArrayOf
return false;
*/
}
+ inline bool sanitize (SANITIZE_ARG_DEF, const char *base) {
+ if (!(SANITIZE (len) && SANITIZE_GET_SIZE())) return false;
+ unsigned int count = len;
+ for (unsigned int i = 0; i < count; i++)
+ if (!SANITIZE_THIS (array[i]))
+ return false;
+ }
ULONG len;
Type array[];
@@ -443,39 +464,16 @@ struct LongArrayOf
/* Array of Offset's */
template <typename Type>
-struct OffsetArrayOf : ArrayOf<OffsetTo<Type> > {
- inline bool sanitize (SANITIZE_ARG_DEF, const char *base) {
- if (!(SANITIZE (this->len) && SANITIZE_GET_SIZE())) return false;
- unsigned int count = this->len;
- for (unsigned int i = 0; i < count; i++)
- if (!this->array[i].sanitize (SANITIZE_ARG, base))
- return false;
- }
-};
+struct OffsetArrayOf : ArrayOf<OffsetTo<Type> > {};
/* Array of LongOffset's */
template <typename Type>
-struct LongOffsetArrayOf : ArrayOf<LongOffsetTo<Type> > {
- inline bool sanitize (SANITIZE_ARG_DEF, const char *base) {
- if (!(SANITIZE (this->len) && SANITIZE_GET_SIZE())) return false;
- unsigned int count = this->len;
- for (unsigned int i = 0; i < count; i++)
- if (!this->array[i].sanitize (SANITIZE_ARG, base))
- return false;
- }
-};
+struct LongOffsetArrayOf : ArrayOf<LongOffsetTo<Type> > {};
/* LongArray of LongOffset's */
template <typename Type>
-struct LongOffsetLongArrayOf : LongArrayOf<LongOffsetTo<Type> > {
- inline bool sanitize (SANITIZE_ARG_DEF, const char *base) {
- if (!(SANITIZE (this->len) && SANITIZE_GET_SIZE())) return false;
- unsigned int count = this->len;
- for (unsigned int i = 0; i < count; i++)
- if (!this->array[i].sanitize (SANITIZE_ARG, base))
- return false;
- }
-};
+struct LongOffsetLongArrayOf : LongArrayOf<LongOffsetTo<Type> > {};
+
/* An array type is one that contains a variable number of objects
* as its last item. An array object is extended with get_len()
diff --git a/pango/opentype/hb-ot-layout-common-private.hh b/pango/opentype/hb-ot-layout-common-private.hh
index a6fa2b45..72c2db03 100644
--- a/pango/opentype/hb-ot-layout-common-private.hh
+++ b/pango/opentype/hb-ot-layout-common-private.hh
@@ -61,16 +61,7 @@ struct Record
};
template <typename Type>
-struct RecordArrayOf : ArrayOf<Record<Type> >
-{
- inline bool sanitize (SANITIZE_ARG_DEF, const char *base) {
- if (!(SANITIZE (this->len) && SANITIZE_GET_SIZE())) return false;
- unsigned int count = this->len;
- for (unsigned int i = 0; i < count; i++)
- if (!SANITIZE_THIS (this->array[i]))
- return false;
- }
-};
+struct RecordArrayOf : ArrayOf<Record<Type> > {};
template <typename Type>
struct RecordListOf : RecordArrayOf<Type>