From a0fe3011bafbe36e7d5810acc7df21bea08c802a Mon Sep 17 00:00:00 2001 From: Rod Sheeter Date: Wed, 14 Feb 2018 10:52:41 -0800 Subject: [PATCH] copy all cmap groups at once --- src/hb-ot-cmap-table.hh | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/hb-ot-cmap-table.hh b/src/hb-ot-cmap-table.hh index a27a80048..c3f242db0 100644 --- a/src/hb-ot-cmap-table.hh +++ b/src/hb-ot-cmap-table.hh @@ -272,17 +272,12 @@ struct CmapSubtableLongSegmented } inline bool serialize(hb_serialize_context_t *context, - unsigned int group_count, - Supplier &group_supplier) + hb_prealloced_array_t &group_data) { TRACE_SERIALIZE (this); if (unlikely(!context->extend_min (*this))) return_trace (false); - if (unlikely(!groups.serialize(context, group_count))) return_trace (false); - for (unsigned int i = 0; i < group_count; i++) - { - const CmapSubtableLongGroup &group = group_supplier[i]; - memcpy(&groups[i], &group, sizeof(group)); - } + if (unlikely(!groups.serialize(context, group_data.len))) return_trace (false); + memcpy(&groups[0], &group_data[0], group_data.len * sizeof(CmapSubtableLongGroup)); return true; } @@ -594,8 +589,7 @@ struct cmap format12.reservedZ.set(0); format12.lengthZ.set(16 + 12 * groups.len); - OT::Supplier group_supplier (&groups[0], groups.len, sizeof (CmapSubtableLongGroup)); - if (unlikely(!format12.serialize(&context, groups.len, group_supplier))) + if (unlikely(!format12.serialize(&context, groups))) { return false; }