[subset] Limit the number of scripts and langsys' that should be checked when collecting features.
This commit is contained in:
parent
a7aba99baa
commit
0e1ad5a075
|
@ -51,6 +51,14 @@
|
||||||
#define HB_CLOSURE_MAX_STAGES 32
|
#define HB_CLOSURE_MAX_STAGES 32
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef HB_MAX_SCRIPTS
|
||||||
|
#define HB_MAX_SCRIPTS 500
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef HB_MAX_LANGSYS
|
||||||
|
#define HB_MAX_LANGSYS 2000
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
namespace OT {
|
namespace OT {
|
||||||
|
|
||||||
|
|
|
@ -668,7 +668,8 @@ struct hb_collect_features_context_t
|
||||||
hb_tag_t table_tag,
|
hb_tag_t table_tag,
|
||||||
hb_set_t *feature_indexes_)
|
hb_set_t *feature_indexes_)
|
||||||
: g (get_gsubgpos_table (face, table_tag)),
|
: g (get_gsubgpos_table (face, table_tag)),
|
||||||
feature_indexes (feature_indexes_) {}
|
feature_indexes (feature_indexes_),
|
||||||
|
langsys_count(0), script_count(0) {}
|
||||||
|
|
||||||
bool inline visited (const OT::Script &s)
|
bool inline visited (const OT::Script &s)
|
||||||
{
|
{
|
||||||
|
@ -678,6 +679,9 @@ struct hb_collect_features_context_t
|
||||||
!s.get_lang_sys_count ()))
|
!s.get_lang_sys_count ()))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
if (script_count++ > HB_MAX_SCRIPTS)
|
||||||
|
return true;
|
||||||
|
|
||||||
return visited (s, visited_script);
|
return visited (s, visited_script);
|
||||||
}
|
}
|
||||||
bool inline visited (const OT::LangSys &l)
|
bool inline visited (const OT::LangSys &l)
|
||||||
|
@ -688,6 +692,9 @@ struct hb_collect_features_context_t
|
||||||
!l.get_feature_count ()))
|
!l.get_feature_count ()))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
if (langsys_count++ > HB_MAX_LANGSYS)
|
||||||
|
return true;
|
||||||
|
|
||||||
return visited (l, visited_langsys);
|
return visited (l, visited_langsys);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -710,6 +717,8 @@ struct hb_collect_features_context_t
|
||||||
private:
|
private:
|
||||||
hb_set_t visited_script;
|
hb_set_t visited_script;
|
||||||
hb_set_t visited_langsys;
|
hb_set_t visited_langsys;
|
||||||
|
unsigned int script_count;
|
||||||
|
unsigned int langsys_count;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
Loading…
Reference in New Issue