[HB] Fix couple of bugs

This commit is contained in:
Behdad Esfahbod 2009-08-04 12:05:24 -04:00
parent 2b5a59c277
commit 95639fccc1
1 changed files with 3 additions and 3 deletions

View File

@ -342,14 +342,14 @@ struct GenericOffsetTo : OffsetType
{ {
unsigned int offset = *this; unsigned int offset = *this;
if (HB_UNLIKELY (!offset)) return Null(Type); if (HB_UNLIKELY (!offset)) return Null(Type);
return CONST_CAST(Type, base, offset); return CONST_CAST(Type, *CONST_CHARP(base), offset);
} }
inline bool sanitize (SANITIZE_ARG_DEF, const void *base) { inline bool sanitize (SANITIZE_ARG_DEF, const void *base) {
if (!SANITIZE_OBJ (*this)) return false; if (!SANITIZE_OBJ (*this)) return false;
unsigned int offset = *this; unsigned int offset = *this;
if (HB_UNLIKELY (!offset)) return true; if (HB_UNLIKELY (!offset)) return true;
return SANITIZE (CAST(Type, base, offset)) || NEUTER (*this, 0); return SANITIZE (CAST(Type, *DECONST_CHARP(base), offset)) || NEUTER (*this, 0);
} }
}; };
template <typename Base, typename OffsetType, typename Type> template <typename Base, typename OffsetType, typename Type>
@ -388,7 +388,7 @@ struct GenericArrayOf
if (!(SANITIZE (len) && SANITIZE_GET_SIZE())) return false; if (!(SANITIZE (len) && SANITIZE_GET_SIZE())) return false;
unsigned int count = len; unsigned int count = len;
for (unsigned int i = 0; i < count; i++) for (unsigned int i = 0; i < count; i++)
if (!SANITIZE_THIS (array[i])) if (!array[i].sanitize (SANITIZE_ARG, base))
return false; return false;
} }