diff --git a/perf/benchmark-subset.cc b/perf/benchmark-subset.cc index 00090d4f5..0c2f903b8 100644 --- a/perf/benchmark-subset.cc +++ b/perf/benchmark-subset.cc @@ -116,6 +116,16 @@ static hb_face_t* preprocess_face(hb_face_t* face) return new_face; } +static hb_face_t *cached_face; + +static void +free_cached_face (void) +{ + hb_face_destroy (cached_face); + cached_face = nullptr; +} + + /* benchmark for subsetting a font */ static void BM_subset (benchmark::State &state, operation_t operation, @@ -126,7 +136,6 @@ static void BM_subset (benchmark::State &state, hb_face_t *face = nullptr; - static hb_face_t *cached_face; static const char *cached_font_path; if (!cached_font_path || strcmp (cached_font_path, test_input.font_path)) @@ -237,6 +246,10 @@ int main(int argc, char** argv) { benchmark::Initialize(&argc, argv); +#ifndef HB_NO_ATEXIT + atexit (free_cached_face); +#endif + if (argc > 1) { num_tests = (argc - 1) / 2;