src/hb-coretext.cc | 20 +++----------------- src/hb-ot-cmap-table.hh | 3 ++- src/hb-ot-layout.cc | 3 +-- src/hb-ot-map.cc | 17 ++++------------- src/hb-ot-post-table.hh | 6 +----- src/hb-private.hh | 31 +++++++++++++++++++------------ src/hb-subset-plan.cc | 2 -- src/hb-subset.cc | 2 -- src/hb-uniscribe.cc | 28 ++++++++-------------------- 9 files changed, 38 insertions(+), 74 deletions(-)
New commits: commit f7515769fd024faca888a47c58f87fb868b0e760 Author: Behdad Esfahbod <[email protected]> Date: Fri Jun 1 17:48:37 2018 -0700 [vector] Use Crap pool in push() as well diff --git a/src/hb-coretext.cc b/src/hb-coretext.cc index 84cc22fd..61f9c35a 100644 --- a/src/hb-coretext.cc +++ b/src/hb-coretext.cc @@ -670,15 +670,11 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan, feature_event_t *event; event = feature_events.push (); - if (unlikely (!event)) - goto fail_features; event->index = features[i].start; event->start = true; event->feature = feature; event = feature_events.push (); - if (unlikely (!event)) - goto fail_features; event->index = features[i].end; event->start = false; event->feature = feature; @@ -692,8 +688,6 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan, feature.order = num_features + 1; feature_event_t *event = feature_events.push (); - if (unlikely (!event)) - goto fail_features; event->index = 0; /* This value does magic. */ event->start = false; event->feature = feature; @@ -710,8 +704,6 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan, { /* Save a snapshot of active features and the range. */ range_record_t *range = range_records.push (); - if (unlikely (!range)) - goto fail_features; if (active_features.len) { @@ -769,10 +761,9 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan, last_index = event->index; } - if (event->start) { - active_feature_t *feature = active_features.push (event->feature); - if (unlikely (!feature)) - goto fail_features; + if (event->start) + { + active_features.push (event->feature); } else { active_feature_t *feature = active_features.find (&event->feature); if (feature) @@ -780,11 +771,6 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan, } } } - else - { - fail_features: - num_features = 0; - } unsigned int scratch_size; hb_buffer_t::scratch_buffer_t *scratch = buffer->get_scratch_buffer (&scratch_size); diff --git a/src/hb-ot-cmap-table.hh b/src/hb-ot-cmap-table.hh index 731aa410..c1903f6e 100644 --- a/src/hb-ot-cmap-table.hh +++ b/src/hb-ot-cmap-table.hh @@ -211,7 +211,8 @@ struct CmapSubtableFormat4 } // There must be a final entry with end_code == 0xFFFF. Check if we need to add one. - if (segment == nullptr || segment->end_code != 0xFFFF) { + if (segment == nullptr || segment->end_code != 0xFFFF) + { segment = segments->push (); segment->start_code.set (0xFFFF); segment->end_code.set (0xFFFF); diff --git a/src/hb-ot-layout.cc b/src/hb-ot-layout.cc index adb00536..8d1471a3 100644 --- a/src/hb-ot-layout.cc +++ b/src/hb-ot-layout.cc @@ -1099,8 +1099,7 @@ struct hb_get_subtables_context_t : inline return_t dispatch (const T &obj) { hb_applicable_t *entry = array.push(); - if (likely (entry)) - entry->init (&obj, apply_to<T>); + entry->init (&obj, apply_to<T>); return HB_VOID; } static return_t default_return_value (void) { return HB_VOID; } diff --git a/src/hb-ot-map.cc b/src/hb-ot-map.cc index b7cbafaa..504f0945 100644 --- a/src/hb-ot-map.cc +++ b/src/hb-ot-map.cc @@ -67,7 +67,6 @@ void hb_ot_map_builder_t::add_feature (hb_tag_t tag, unsigned int value, hb_ot_map_feature_flags_t flags) { feature_info_t *info = feature_infos.push(); - if (unlikely (!info)) return; if (unlikely (!tag)) return; info->tag = tag; info->seq = feature_infos.len; @@ -108,8 +107,6 @@ hb_ot_map_builder_t::add_lookups (hb_ot_map_t &m, if (lookup_indices[i] >= table_lookup_count) continue; hb_ot_map_t::lookup_map_t *lookup = m.lookups[table_index].push (); - if (unlikely (!lookup)) - return; lookup->mask = mask; lookup->index = lookup_indices[i]; lookup->auto_zwnj = auto_zwnj; @@ -124,10 +121,8 @@ hb_ot_map_builder_t::add_lookups (hb_ot_map_t &m, void hb_ot_map_builder_t::add_pause (unsigned int table_index, hb_ot_map_t::pause_func_t pause_func) { stage_info_t *s = stages[table_index].push (); - if (likely (s)) { - s->index = current_stage[table_index]; - s->pause_func = pause_func; - } + s->index = current_stage[table_index]; + s->pause_func = pause_func; current_stage[table_index]++; } @@ -238,8 +233,6 @@ hb_ot_map_builder_t::compile (hb_ot_map_t &m, hb_ot_map_t::feature_map_t *map = m.features.push (); - if (unlikely (!map)) - break; map->tag = info->tag; map->index[0] = feature_index[0]; @@ -321,10 +314,8 @@ hb_ot_map_builder_t::compile (hb_ot_map_t &m, if (stage_index < stages[table_index].len && stages[table_index][stage_index].index == stage) { hb_ot_map_t::stage_map_t *stage_map = m.stages[table_index].push (); - if (likely (stage_map)) { - stage_map->last_lookup = last_num_lookups; - stage_map->pause_func = stages[table_index][stage_index].pause_func; - } + stage_map->last_lookup = last_num_lookups; + stage_map->pause_func = stages[table_index][stage_index].pause_func; stage_index++; } diff --git a/src/hb-ot-post-table.hh b/src/hb-ot-post-table.hh index 2762eb59..ab3c0535 100644 --- a/src/hb-ot-post-table.hh +++ b/src/hb-ot-post-table.hh @@ -125,11 +125,7 @@ struct post const uint8_t *end = (uint8_t *) table + table_length; for (const uint8_t *data = pool; data < end && data + *data <= end; data += 1 + *data) - { - uint32_t *offset = index_to_offset.push (data - pool); - if (unlikely (!offset)) - break; - } + index_to_offset.push (data - pool); } inline void fini (void) { diff --git a/src/hb-private.hh b/src/hb-private.hh index 6fee049d..cdb6c306 100644 --- a/src/hb-private.hh +++ b/src/hb-private.hh @@ -658,17 +658,14 @@ struct hb_vector_t inline Type *push (void) { if (unlikely (!resize (len + 1))) - return nullptr; - + return &Crap(Type); return &arrayZ[len - 1]; } inline Type *push (const Type& v) { - if (unlikely (!resize (len + 1))) - return nullptr; - - arrayZ[len - 1] = v; - return &arrayZ[len - 1]; + Type *p = push (); + *p = v; + return p; } /* Allocate for size but don't adjust len. */ diff --git a/src/hb-subset-plan.cc b/src/hb-subset-plan.cc index 97ff14cf..7100efc8 100644 --- a/src/hb-subset-plan.cc +++ b/src/hb-subset-plan.cc @@ -97,9 +97,7 @@ _populate_gids_to_retain (hb_face_t *face, glyphs->alloc (all_gids_to_retain->get_population ()); gid = HB_SET_VALUE_INVALID; while (all_gids_to_retain->next (&gid)) - { glyphs->push (gid); - } hb_set_destroy (all_gids_to_retain); glyf.fini (); diff --git a/src/hb-subset.cc b/src/hb-subset.cc index d631fc7c..4d2dc293 100644 --- a/src/hb-subset.cc +++ b/src/hb-subset.cc @@ -224,8 +224,6 @@ hb_subset_face_add_table (hb_face_t *face, hb_tag_t tag, hb_blob_t *blob) hb_subset_face_data_t *data = (hb_subset_face_data_t *) face->user_data; hb_subset_face_data_t::table_entry_t *entry = data->tables.push (); - if (unlikely (!entry)) - return false; entry->tag = tag; entry->blob = hb_blob_reference (blob); diff --git a/src/hb-uniscribe.cc b/src/hb-uniscribe.cc index 3b52ad3f..6d6afe80 100644 --- a/src/hb-uniscribe.cc +++ b/src/hb-uniscribe.cc @@ -646,15 +646,11 @@ _hb_uniscribe_shape (hb_shape_plan_t *shape_plan, feature_event_t *event; event = feature_events.push (); - if (unlikely (!event)) - goto fail_features; event->index = features[i].start; event->start = true; event->feature = feature; event = feature_events.push (); - if (unlikely (!event)) - goto fail_features; event->index = features[i].end; event->start = false; event->feature = feature; @@ -668,8 +664,6 @@ _hb_uniscribe_shape (hb_shape_plan_t *shape_plan, feature.order = num_features + 1; feature_event_t *event = feature_events.push (); - if (unlikely (!event)) - goto fail_features; event->index = 0; /* This value does magic. */ event->start = false; event->feature = feature; @@ -686,8 +680,6 @@ _hb_uniscribe_shape (hb_shape_plan_t *shape_plan, { /* Save a snapshot of active features and the range. */ range_record_t *range = range_records.push (); - if (unlikely (!range)) - goto fail_features; unsigned int offset = feature_records.len; @@ -696,8 +688,7 @@ _hb_uniscribe_shape (hb_shape_plan_t *shape_plan, { if (!j || active_features[j].rec.tagFeature != feature_records[feature_records.len - 1].tagFeature) { - if (unlikely (!feature_records.push (active_features[j].rec))) - goto fail_features; + feature_records.push (active_features[j].rec); } else { @@ -716,10 +707,12 @@ _hb_uniscribe_shape (hb_shape_plan_t *shape_plan, last_index = event->index; } - if (event->start) { - if (unlikely (!active_features.push (event->feature))) - goto fail_features; - } else { + if (event->start) + { + active_features.push (event->feature); + } + else + { active_feature_t *feature = active_features.find (&event->feature); if (feature) active_features.remove (feature - active_features.arrayZ); @@ -727,7 +720,7 @@ _hb_uniscribe_shape (hb_shape_plan_t *shape_plan, } if (!range_records.len) /* No active feature found. */ - goto fail_features; + num_features = 0; /* Fixup the pointers. */ for (unsigned int i = 0; i < range_records.len; i++) @@ -736,11 +729,6 @@ _hb_uniscribe_shape (hb_shape_plan_t *shape_plan, range->props.potfRecords = feature_records.arrayZ + reinterpret_cast<uintptr_t> (range->props.potfRecords); } } - else - { - fail_features: - num_features = 0; - } #define FAIL(...) \ HB_STMT_START { \ commit 975bdd5ef562e37655067b703b2b9ca7481f4985 Author: Behdad Esfahbod <[email protected]> Date: Fri Jun 1 17:37:13 2018 -0700 [vector] Keep success status diff --git a/src/hb-private.hh b/src/hb-private.hh index e626a141..6fee049d 100644 --- a/src/hb-private.hh +++ b/src/hb-private.hh @@ -625,11 +625,12 @@ struct CrapOrNull<const Type> { #define HB_PREALLOCED_ARRAY_INIT {0, 0, nullptr} -template <typename Type, unsigned int StaticSize=16> +template <typename Type, unsigned int StaticSize=8> struct hb_vector_t { unsigned int len; unsigned int allocated; + bool successful; Type *arrayZ; Type static_array[StaticSize]; @@ -637,6 +638,7 @@ struct hb_vector_t { len = 0; allocated = ARRAY_LENGTH (static_array); + successful = true; arrayZ = static_array; } @@ -672,6 +674,9 @@ struct hb_vector_t /* Allocate for size but don't adjust len. */ inline bool alloc (unsigned int size) { + if (unlikely (!successful)) + return false; + if (likely (size <= allocated)) return true; @@ -697,7 +702,10 @@ struct hb_vector_t } if (unlikely (!new_array)) + { + successful = false; return false; + } arrayZ = new_array; allocated = new_allocated; commit 1ab3c3ed1bbc404086aefffaef4b8261bb77caa7 Author: Behdad Esfahbod <[email protected]> Date: Fri Jun 1 17:34:24 2018 -0700 [vector] Whitespace diff --git a/src/hb-private.hh b/src/hb-private.hh index b4633213..e626a141 100644 --- a/src/hb-private.hh +++ b/src/hb-private.hh @@ -683,15 +683,17 @@ struct hb_vector_t Type *new_array = nullptr; - if (arrayZ == static_array) { + if (arrayZ == static_array) + { new_array = (Type *) calloc (new_allocated, sizeof (Type)); if (new_array) memcpy (new_array, arrayZ, len * sizeof (Type)); - } else { + } + else + { bool overflows = (new_allocated < allocated) || _hb_unsigned_int_mul_overflows (new_allocated, sizeof (Type)); - if (likely (!overflows)) { + if (likely (!overflows)) new_array = (Type *) realloc (arrayZ, new_allocated * sizeof (Type)); - } } if (unlikely (!new_array)) _______________________________________________ HarfBuzz mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/harfbuzz
