[serialize] Handle non-nullable offsets

This commit is contained in:
Behdad Esfahbod 2019-04-02 17:21:54 -07:00
parent e04518bafc
commit e42b82c828
1 changed files with 9 additions and 4 deletions

View File

@ -281,19 +281,24 @@ struct OffsetTo : Offset<OffsetType, has_null>
}
template <typename T>
void serialize_subset (hb_subset_context_t *c, const T &src, const void *base)
bool serialize_subset (hb_subset_context_t *c, const T &src, const void *base)
{
*this = 0;
if (&src == &Null (T))
return;
if (has_null && &src == &Null (T))
return false;
c->serializer->push ();
if (src.subset (c))
bool ret = src.subset (c);
if (ret || !has_null)
c->serializer->add_link (*this,
c->serializer->pop_pack (),
base);
else
c->serializer->pop_discard ();
return ret;
}
bool sanitize_shallow (hb_sanitize_context_t *c, const void *base) const