[serialize] Handle non-nullable offsets
diff --git a/src/hb-open-type.hh b/src/hb-open-type.hh index b210b29..410a5f1 100644 --- a/src/hb-open-type.hh +++ b/src/hb-open-type.hh
@@ -281,19 +281,24 @@ } 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