diff --git a/src/hb-face.cc b/src/hb-face.cc index b6c7d80c1..56ff340ff 100644 --- a/src/hb-face.cc +++ b/src/hb-face.cc @@ -342,6 +342,21 @@ static struct supported_face_loaders_t { #endif }; +static const char *get_default_loader_name () +{ + static hb_atomic_ptr_t static_loader_name; + const char *loader_name = static_loader_name.get_acquire (); + if (!loader_name) + { + loader_name = getenv ("HB_FACE_LOADER"); + if (!loader_name) + loader_name = ""; + if (!static_loader_name.cmpexch (nullptr, loader_name)) + loader_name = static_loader_name.get_acquire (); + } + return loader_name; +} + /** * hb_face_create_from_file_or_fail_using: * @file_name: A font filename @@ -367,19 +382,9 @@ hb_face_create_from_file_or_fail_using (const char *file_name, const char *loader_name) { bool retry = false; - if (!loader_name || !*loader_name) { - static hb_atomic_ptr_t static_loader_name; - loader_name = static_loader_name.get_acquire (); - if (!loader_name) - { - loader_name = getenv ("HB_FACE_LOADER"); - if (!loader_name) - loader_name = ""; - if (!static_loader_name.cmpexch (nullptr, loader_name)) - loader_name = static_loader_name.get_acquire (); - } + loader_name = get_default_loader_name (); retry = true; } if (loader_name && !*loader_name) loader_name = nullptr; diff --git a/src/hb-font.cc b/src/hb-font.cc index 33d71c86d..28d9ff2f5 100644 --- a/src/hb-font.cc +++ b/src/hb-font.cc @@ -2321,6 +2321,21 @@ static struct supported_font_funcs_t { #endif }; +static const char *get_default_funcs_name () +{ + static hb_atomic_ptr_t static_funcs_name; + const char *name = static_funcs_name.get_acquire (); + if (!name) + { + name = getenv ("HB_FONT_FUNCS"); + if (!name) + name = ""; + if (!static_funcs_name.cmpexch (nullptr, name)) + name = static_funcs_name.get_acquire (); + } + return name; +} + /** * hb_font_set_funcs_using: * @font: #hb_font_t to work upon @@ -2345,16 +2360,7 @@ hb_font_set_funcs_using (hb_font_t *font, if (!name || !*name) { - static hb_atomic_ptr_t static_funcs_name; - name = static_funcs_name.get_acquire (); - if (!name) - { - name = getenv ("HB_FONT_FUNCS"); - if (!name) - name = ""; - if (!static_funcs_name.cmpexch (nullptr, name)) - name = static_funcs_name.get_acquire (); - } + name = get_default_funcs_name (); retry = true; } if (name && !*name) name = nullptr;