From 09386737312ddae4d850334cd55063de935cf6d5 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Wed, 26 Apr 2023 13:19:27 -0600 Subject: [PATCH] [gvar] Error handling & micro-optimization --- src/hb-ot-var-common.hh | 2 +- src/hb-ot-var-gvar-table.hh | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/hb-ot-var-common.hh b/src/hb-ot-var-common.hh index 01930a8e9..5c82ae159 100644 --- a/src/hb-ot-var-common.hh +++ b/src/hb-ot-var-common.hh @@ -270,7 +270,7 @@ struct TupleVariationHeader if (shared_tuple_active_idx) { - int v = (*shared_tuple_active_idx)[index]; + int v = (*shared_tuple_active_idx).arrayZ[index]; if (v != -1) { start_idx = v; diff --git a/src/hb-ot-var-gvar-table.hh b/src/hb-ot-var-gvar-table.hh index 7a8599a7c..0ca7192a2 100644 --- a/src/hb-ot-var-gvar-table.hh +++ b/src/hb-ot-var-gvar-table.hh @@ -227,7 +227,7 @@ struct gvar hb_array_t shared_tuples = (table+table->sharedTuples).as_array (table->sharedTupleCount * table->axisCount); unsigned count = table->sharedTupleCount; - shared_tuple_active_idx.resize (count); + if (unlikely (!shared_tuple_active_idx.resize (count, false))) return; unsigned axis_count = table->axisCount; for (unsigned i = 0; i < count; i++) { @@ -316,7 +316,8 @@ struct gvar bool flush = false; do { - float scalar = iterator.current_tuple->calculate_scalar (coords, num_coords, shared_tuples, &shared_tuple_active_idx); + float scalar = iterator.current_tuple->calculate_scalar (coords, num_coords, shared_tuples, + shared_tuple_active_idx.in_error () ? nullptr : &shared_tuple_active_idx); if (scalar == 0.f) continue; const HBUINT8 *p = iterator.get_serialized_data (); unsigned int length = iterator.current_tuple->get_data_size ();