[serialize] Break down assert

This commit is contained in:
Behdad Esfahbod 2018-12-11 21:18:47 -05:00
parent 9844c880e2
commit 2aba2c6c73
1 changed files with 8 additions and 10 deletions

View File

@ -588,22 +588,20 @@ struct hb_serialize_context_t
} }
template <typename Type> template <typename Type>
inline Type *extend_min (Type &obj) inline Type *extend_size (Type &obj, unsigned int size)
{ {
unsigned int size = obj.min_size; assert (this->start <= (char *) &obj);
assert (this->start <= (char *) &obj && (char *) &obj <= this->head && (char *) &obj + size >= this->head); assert ((char *) &obj <= this->head);
assert ((char *) &obj + size >= this->head);
if (unlikely (!this->allocate_size<Type> (((char *) &obj) + size - this->head))) return nullptr; if (unlikely (!this->allocate_size<Type> (((char *) &obj) + size - this->head))) return nullptr;
return reinterpret_cast<Type *> (&obj); return reinterpret_cast<Type *> (&obj);
} }
template <typename Type> template <typename Type>
inline Type *extend (Type &obj) inline Type *extend_min (Type &obj) { return extend_size (obj, obj.min_size); }
{
unsigned int size = obj.get_size (); template <typename Type>
assert (this->start < (char *) &obj && (char *) &obj <= this->head && (char *) &obj + size >= this->head); inline Type *extend (Type &obj) { return extend_size (obj, obj.get_size ()); }
if (unlikely (!this->allocate_size<Type> (((char *) &obj) + size - this->head))) return nullptr;
return reinterpret_cast<Type *> (&obj);
}
/* Output routines. */ /* Output routines. */
template <typename Type> template <typename Type>