From c62a8f10f3b9a4ac3ac6b686464ac734ebfa2f7f Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Fri, 5 Aug 2011 18:02:30 -0400 Subject: [PATCH] Free all static memory upon exit --- src/hb-common.cc | 8 +++++--- src/hb-shape.cc | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/hb-common.cc b/src/hb-common.cc index f2347d5..afbe941 100644 --- a/src/hb-common.cc +++ b/src/hb-common.cc @@ -161,8 +161,10 @@ struct hb_language_item_t { void finish (void) { free (lang); } }; -static hb_static_mutex_t langs_lock; -static hb_lockable_set_t langs; +static struct hb_static_lang_set_t : hb_lockable_set_t { + ~hb_static_lang_set_t (void) { this->finish (lock); } + hb_static_mutex_t lock; +} langs; hb_language_t hb_language_from_string (const char *str) @@ -170,7 +172,7 @@ hb_language_from_string (const char *str) if (!str || !*str) return HB_LANGUAGE_INVALID; - hb_language_item_t *item = langs.find_or_insert (str, langs_lock); + hb_language_item_t *item = langs.find_or_insert (str, langs.lock); return likely (item) ? item->lang : HB_LANGUAGE_INVALID; } diff --git a/src/hb-shape.cc b/src/hb-shape.cc index 986dd70..9e4469d 100644 --- a/src/hb-shape.cc +++ b/src/hb-shape.cc @@ -60,8 +60,8 @@ static const struct hb_shaper_pair_t { }; #undef HB_SHAPER_IMPLEMENT -static class static_shaper_list_t { - public: +static struct static_shaper_list_t +{ static_shaper_list_t (void) { char *env = getenv ("HB_SHAPER_LIST"); -- 2.7.4