diff options
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.cc | 31 |
1 files changed, 17 insertions, 14 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 c26c91d484a..399829a81bf 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-icu.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-icu.cc @@ -49,6 +49,9 @@ * Functions for using HarfBuzz with the ICU library to provide Unicode data. **/ +/* ICU doesn't do-while(0) around their statements. Ugh! + * https://unicode-org.atlassian.net/browse/CLDR-13027 */ +#define HB_ICU_STMT(S) do { S } while (0) hb_script_t hb_icu_script_to_script (UScriptCode script) @@ -183,9 +186,9 @@ hb_icu_unicode_compose (hb_unicode_funcs_t *ufuncs HB_UNUSED, len = 0; err = false; - U16_APPEND (utf16, len, ARRAY_LENGTH (utf16), a, err); + HB_ICU_STMT (U16_APPEND (utf16, len, ARRAY_LENGTH (utf16), a, err)); if (err) return false; - U16_APPEND (utf16, len, ARRAY_LENGTH (utf16), b, err); + HB_ICU_STMT (U16_APPEND (utf16, len, ARRAY_LENGTH (utf16), b, err)); if (err) return false; icu_err = U_ZERO_ERROR; @@ -193,7 +196,7 @@ hb_icu_unicode_compose (hb_unicode_funcs_t *ufuncs HB_UNUSED, if (U_FAILURE (icu_err)) return false; if (u_countChar32 (normalized, len) == 1) { - U16_GET_UNSAFE (normalized, 0, *ab); + HB_ICU_STMT (U16_GET_UNSAFE (normalized, 0, *ab)); ret = true; } else { ret = false; @@ -221,13 +224,13 @@ hb_icu_unicode_decompose (hb_unicode_funcs_t *ufuncs HB_UNUSED, len = u_countChar32 (decomposed, len); if (len == 1) { - U16_GET_UNSAFE (decomposed, 0, *a); + HB_ICU_STMT (U16_GET_UNSAFE (decomposed, 0, *a)); *b = 0; return *a != ab; } else if (len == 2) { len =0; - U16_NEXT_UNSAFE (decomposed, len, *a); - U16_NEXT_UNSAFE (decomposed, len, *b); + HB_ICU_STMT (U16_NEXT_UNSAFE (decomposed, len, *a)); + HB_ICU_STMT (U16_NEXT_UNSAFE (decomposed, len, *b)); } return true; } @@ -236,7 +239,7 @@ hb_icu_unicode_decompose (hb_unicode_funcs_t *ufuncs HB_UNUSED, /* We don't ifdef-out the fallback code such that compiler always * sees it and makes sure it's compilable. */ - UChar utf16[2], normalized[2 * HB_UNICODE_MAX_DECOMPOSITION_LEN + 1]; + UChar utf16[2], normalized[2 * 19/*HB_UNICODE_MAX_DECOMPOSITION_LEN*/ + 1]; unsigned int len; hb_bool_t ret, err; UErrorCode icu_err; @@ -247,7 +250,7 @@ hb_icu_unicode_decompose (hb_unicode_funcs_t *ufuncs HB_UNUSED, len = 0; err = false; - U16_APPEND (utf16, len, ARRAY_LENGTH (utf16), ab, err); + HB_ICU_STMT (U16_APPEND (utf16, len, ARRAY_LENGTH (utf16), ab, err)); if (err) return false; icu_err = U_ZERO_ERROR; @@ -258,13 +261,13 @@ hb_icu_unicode_decompose (hb_unicode_funcs_t *ufuncs HB_UNUSED, len = u_countChar32 (normalized, len); if (len == 1) { - U16_GET_UNSAFE (normalized, 0, *a); + HB_ICU_STMT (U16_GET_UNSAFE (normalized, 0, *a)); *b = 0; ret = *a != ab; } else if (len == 2) { len =0; - U16_NEXT_UNSAFE (normalized, len, *a); - U16_NEXT_UNSAFE (normalized, len, *b); + HB_ICU_STMT (U16_NEXT_UNSAFE (normalized, len, *a)); + HB_ICU_STMT (U16_NEXT_UNSAFE (normalized, len, *b)); /* Here's the ugly part: if ab decomposes to a single character and * that character decomposes again, we have to detect that and undo @@ -275,7 +278,7 @@ hb_icu_unicode_decompose (hb_unicode_funcs_t *ufuncs HB_UNUSED, if (U_FAILURE (icu_err)) return false; hb_codepoint_t c; - U16_GET_UNSAFE (recomposed, 0, c); + HB_ICU_STMT (U16_GET_UNSAFE (recomposed, 0, c)); if (c != *a && c != ab) { *a = c; *b = 0; @@ -284,7 +287,7 @@ hb_icu_unicode_decompose (hb_unicode_funcs_t *ufuncs HB_UNUSED, } else { /* If decomposed to more than two characters, take the last one, * and recompose the rest to get the first component. */ - U16_PREV_UNSAFE (normalized, len, *b); /* Changes len in-place. */ + HB_ICU_STMT (U16_PREV_UNSAFE (normalized, len, *b)); /* Changes len in-place. */ UChar recomposed[18 * 2]; icu_err = U_ZERO_ERROR; len = unorm2_normalize (unorm2_getNFCInstance (&icu_err), normalized, len, recomposed, ARRAY_LENGTH (recomposed), &icu_err); @@ -293,7 +296,7 @@ hb_icu_unicode_decompose (hb_unicode_funcs_t *ufuncs HB_UNUSED, /* We expect that recomposed has exactly one character now. */ if (unlikely (u_countChar32 (recomposed, len) != 1)) return false; - U16_GET_UNSAFE (recomposed, 0, *a); + HB_ICU_STMT (U16_GET_UNSAFE (recomposed, 0, *a)); ret = true; } |