[repacker] ensure lookup map is updated when lookup memory location changes.
This commit is contained in:
parent
4e7360f78d
commit
fb3f6ad7c0
|
@ -291,12 +291,12 @@ struct graph_t
|
|||
|
||||
check_success (!queue.in_error ());
|
||||
check_success (!sorted_graph.in_error ());
|
||||
if (!check_success (new_id == -1))
|
||||
print_orphaned_nodes ();
|
||||
|
||||
remap_all_obj_indices (id_map, &sorted_graph);
|
||||
|
||||
hb_swap (vertices_, sorted_graph);
|
||||
|
||||
if (!check_success (new_id == -1))
|
||||
print_orphaned_nodes ();
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -142,7 +142,8 @@ struct Lookup : public OT::Lookup
|
|||
+ new_sub_tables.iter() | hb_sink (all_new_subtables);
|
||||
}
|
||||
|
||||
add_sub_tables (c, this_index, type, all_new_subtables);
|
||||
if (all_new_subtables)
|
||||
add_sub_tables (c, this_index, type, all_new_subtables);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -150,7 +151,7 @@ struct Lookup : public OT::Lookup
|
|||
void add_sub_tables (gsubgpos_graph_context_t& c,
|
||||
unsigned this_index,
|
||||
unsigned type,
|
||||
hb_vector_t<unsigned> subtable_indices)
|
||||
hb_vector_t<unsigned>& subtable_indices)
|
||||
{
|
||||
bool is_ext = is_extension (c.table_tag);
|
||||
auto& v = c.graph.vertices_[this_index];
|
||||
|
@ -184,6 +185,10 @@ struct Lookup : public OT::Lookup
|
|||
(char*) new_lookup;
|
||||
c.graph.vertices_[subtable_id].parents.push (this_index);
|
||||
}
|
||||
|
||||
// The head location of the lookup has changed, invalidating the lookups map entry
|
||||
// in the context. Update the map.
|
||||
c.lookups.set (this_index, new_lookup);
|
||||
}
|
||||
|
||||
unsigned create_extension_subtable (gsubgpos_graph_context_t& c,
|
||||
|
|
|
@ -82,7 +82,8 @@ bool _presplit_subtables_if_needed (graph::gsubgpos_graph_context_t& ext_context
|
|||
for (unsigned lookup_index : ext_context.lookups.keys ())
|
||||
{
|
||||
graph::Lookup* lookup = ext_context.lookups.get(lookup_index);
|
||||
lookup->split_subtables_if_needed (ext_context, lookup_index);
|
||||
if (!lookup->split_subtables_if_needed (ext_context, lookup_index))
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
Loading…
Reference in New Issue