From cd1447a6962496fca60a2f5e5d9cf4448575cc24 Mon Sep 17 00:00:00 2001 From: Ben Ramsey Date: Tue, 19 Oct 2021 23:59:11 -0500 Subject: [PATCH 1/4] Change UBool to bool for equality operators in ICU >= 70.1 Refer to: - https://github.com/unicode-org/icu/commit/633438f8da99fee815e2c61626ea779a84567a3d - https://github.com/unicode-org/icu/commit/f6325d49ba57ec26f320b2865ce09ca47db458d9 --- ext/intl/breakiterator/codepointiterator_internal.cpp | 4 ++++ ext/intl/breakiterator/codepointiterator_internal.h | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/ext/intl/breakiterator/codepointiterator_internal.cpp b/ext/intl/breakiterator/codepointiterator_internal.cpp index 71ba056994d0..3982a599af38 100644 --- a/ext/intl/breakiterator/codepointiterator_internal.cpp +++ b/ext/intl/breakiterator/codepointiterator_internal.cpp @@ -73,7 +73,11 @@ CodePointBreakIterator::~CodePointBreakIterator() clearCurrentCharIter(); } +#if U_ICU_VERSION_MAJOR_NUM >= 70 +bool CodePointBreakIterator::operator==(const BreakIterator& that) const +#else UBool CodePointBreakIterator::operator==(const BreakIterator& that) const +#endif { if (typeid(*this) != typeid(that)) { return false; diff --git a/ext/intl/breakiterator/codepointiterator_internal.h b/ext/intl/breakiterator/codepointiterator_internal.h index 43ec79d0b776..93b903a20bb8 100644 --- a/ext/intl/breakiterator/codepointiterator_internal.h +++ b/ext/intl/breakiterator/codepointiterator_internal.h @@ -37,7 +37,11 @@ namespace PHP { virtual ~CodePointBreakIterator(); +#if U_ICU_VERSION_MAJOR_NUM >= 70 + virtual bool operator==(const BreakIterator& that) const; +#else virtual UBool operator==(const BreakIterator& that) const; +#endif virtual CodePointBreakIterator* clone(void) const; From 8cc00121d884491064ace635370730b693d7ce57 Mon Sep 17 00:00:00 2001 From: Ben Ramsey Date: Wed, 20 Oct 2021 00:02:55 -0500 Subject: [PATCH 2/4] Accommodate changes to canonicalized forms in ICU >= 70.1 Refer to: https://github.com/unicode-org/icu/commit/01e1adc9e412c9c3177dc3e30d056c25d8687853 --- ext/intl/locale/locale_methods.c | 2 +- ext/intl/tests/locale_filter_matches4.phpt | 4 +- .../tests/locale_filter_matches4_icu70.phpt | 367 ++++++++++++++++++ 3 files changed, 370 insertions(+), 3 deletions(-) create mode 100644 ext/intl/tests/locale_filter_matches4_icu70.phpt diff --git a/ext/intl/locale/locale_methods.c b/ext/intl/locale/locale_methods.c index 1782dd6ecb43..159b3ea0a192 100644 --- a/ext/intl/locale/locale_methods.c +++ b/ext/intl/locale/locale_methods.c @@ -1238,7 +1238,7 @@ PHP_FUNCTION(locale_filter_matches) if( token && (token==cur_lang_tag) ){ /* check if the char. after match is SEPARATOR */ chrcheck = token + (strlen(cur_loc_range)); - if( isIDSeparator(*chrcheck) || isEndOfTag(*chrcheck) ){ + if( isIDSeparator(*chrcheck) || isKeywordSeparator(*chrcheck) || isEndOfTag(*chrcheck) ){ efree( cur_lang_tag ); efree( cur_loc_range ); if( can_lang_tag){