summaryrefslogtreecommitdiff
path: root/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-icu.cc
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/libs/harfbuzz/harfbuzz-src/src/hb-icu.cc')
-rw-r--r--Build/source/libs/harfbuzz/harfbuzz-src/src/hb-icu.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-icu.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-icu.cc
index 552eaeca51e..c52e165bac9 100644
--- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-icu.cc
+++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-icu.cc
@@ -351,7 +351,12 @@ static hb_unicode_funcs_t *static_icu_funcs = nullptr;
static
void free_static_icu_funcs (void)
{
- hb_unicode_funcs_destroy (static_icu_funcs);
+retry:
+ hb_unicode_funcs_t *icu_funcs = (hb_unicode_funcs_t *) hb_atomic_ptr_get (&static_icu_funcs);
+ if (!hb_atomic_ptr_cmpexch (&static_icu_funcs, icu_funcs, nullptr))
+ goto retry;
+
+ hb_unicode_funcs_destroy (icu_funcs);
}
#endif