[HarfBuzz] harfbuzz: Branch 'master'
Behdad Esfahbod
behdad at kemper.freedesktop.org
Mon Jul 30 23:39:49 UTC 2018
src/hb-ot-layout.cc | 26 ++++++++--
test/api/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5670861909524480 |binary
test/api/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-6136125075750912 |binary
3 files changed, 21 insertions(+), 5 deletions(-)
New commits:
commit 5edf454aa64aad461c90bd991e7eaf27668b7e6b
Author: Garret Rieger <grieger at google.com>
Date: Thu Jul 26 17:42:02 2018 -0700
[subset] During lookup collection remember the features we've already processed.
diff --git a/src/hb-ot-layout.cc b/src/hb-ot-layout.cc
index 01ca5143..b38dbc38 100644
--- a/src/hb-ot-layout.cc
+++ b/src/hb-ot-layout.cc
@@ -663,6 +663,7 @@ _hb_ot_layout_collect_lookups_features (hb_face_t *face,
unsigned int script_index,
unsigned int language_index,
const hb_tag_t *features,
+ hb_set_t *visited_features,
hb_set_t *lookup_indexes /* OUT */)
{
if (!features)
@@ -673,11 +674,15 @@ _hb_ot_layout_collect_lookups_features (hb_face_t *face,
script_index,
language_index,
&required_feature_index,
- nullptr))
- _hb_ot_layout_collect_lookups_lookups (face,
- table_tag,
- required_feature_index,
- lookup_indexes);
+ nullptr)
+ && !visited_features->has (required_feature_index))
+ {
+ _hb_ot_layout_collect_lookups_lookups (face,
+ table_tag,
+ required_feature_index,
+ lookup_indexes);
+ visited_features->add (required_feature_index);
+ }
/* All features */
unsigned int feature_indices[32];
@@ -694,10 +699,14 @@ _hb_ot_layout_collect_lookups_features (hb_face_t *face,
feature_indices);
for (unsigned int i = 0; i < len; i++)
+ {
+ if (visited_features->has (feature_indices[i])) continue;
_hb_ot_layout_collect_lookups_lookups (face,
table_tag,
feature_indices[i],
lookup_indexes);
+ visited_features->add (feature_indices[i]);
+ }
offset += len;
} while (len == ARRAY_LENGTH (feature_indices));
@@ -727,6 +736,7 @@ _hb_ot_layout_collect_lookups_languages (hb_face_t *face,
unsigned int script_index,
const hb_tag_t *languages,
const hb_tag_t *features,
+ hb_set_t *visited_features,
hb_set_t *lookup_indexes /* OUT */)
{
_hb_ot_layout_collect_lookups_features (face,
@@ -734,6 +744,7 @@ _hb_ot_layout_collect_lookups_languages (hb_face_t *face,
script_index,
HB_OT_LAYOUT_DEFAULT_LANGUAGE_INDEX,
features,
+ visited_features,
lookup_indexes);
if (!languages)
@@ -749,6 +760,7 @@ _hb_ot_layout_collect_lookups_languages (hb_face_t *face,
script_index,
language_index,
features,
+ visited_features,
lookup_indexes);
}
else
@@ -766,6 +778,7 @@ _hb_ot_layout_collect_lookups_languages (hb_face_t *face,
script_index,
language_index,
features,
+ visited_features,
lookup_indexes);
}
}
@@ -784,6 +797,7 @@ hb_ot_layout_collect_lookups (hb_face_t *face,
const hb_tag_t *features,
hb_set_t *lookup_indexes /* OUT */)
{
+ hb_auto_t<hb_set_t> visited_features;
if (!scripts)
{
/* All scripts */
@@ -796,6 +810,7 @@ hb_ot_layout_collect_lookups (hb_face_t *face,
script_index,
languages,
features,
+ &visited_features,
lookup_indexes);
}
else
@@ -812,6 +827,7 @@ hb_ot_layout_collect_lookups (hb_face_t *face,
script_index,
languages,
features,
+ &visited_features,
lookup_indexes);
}
}
diff --git a/test/api/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5670861909524480 b/test/api/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5670861909524480
new file mode 100644
index 00000000..49bcb309
Binary files /dev/null and b/test/api/fonts/clusterfuzz-testcase-minimized-hb-subset-fuzzer-5670861909524480 differ
diff --git a/test/api/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-6136125075750912 b/test/api/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-6136125075750912
new file mode 100644
index 00000000..ffcea646
Binary files /dev/null and b/test/api/fonts/clusterfuzz-testcase-minimized-hb-subset-get-codepoints-fuzzer-6136125075750912 differ
More information about the HarfBuzz
mailing list