Skip to content

ext/intl: Use C++ idioms in locale_methods.cpp - #24681

Open
devnexen wants to merge 1 commit into
php:masterfrom
devnexen:intl_cpp_conversion_1
Open

devnexen wants to merge 1 commit into
php:masterfrom
devnexen:intl_cpp_conversion_1

Conversation

@devnexen

Copy link
Copy Markdown
Member

First step in moving ext/intl from C-style code towards C++.

Replace the uloc_* buffer/retry loops with helpers that preflight the call and return an exactly sized zend_string or icu::UnicodeString. Also use LocalUEnumerationPointer, icu::Locale::getDefault() and C++ casts.

The uloc_* accessors are kept: icu::Locale normalises the ID and would change results for existing inputs. Further C++ replacements need a newer ICU than the 57.1 minimum: Locale::addLikelySubtags(), minimizeSubtags() and std::string getKeywordValue() (ICU 63), LocaleMatcher for acceptFromHttp (ICU 65).

First step in moving ext/intl from C-style code towards C++.

Replace the uloc_* buffer/retry loops with helpers that preflight the
call and return an exactly sized zend_string or icu::UnicodeString.
Also use LocalUEnumerationPointer, icu::Locale::getDefault() and C++
casts. locale_add_likely_subtags() and locale_minimize_subtags() keep
their ULOC_FULLNAME_CAPACITY buffer: older ICU (e.g. 74) accepts
overlong input there and would otherwise return it instead of failing.

The uloc_* accessors are kept: icu::Locale normalises the ID and would
change results for existing inputs. Further C++ replacements need a
newer ICU than the 57.1 minimum: Locale::addLikelySubtags(),
minimizeSubtags() and std::string getKeywordValue() (ICU 63),
LocaleMatcher for acceptFromHttp (ICU 65).
@devnexen
devnexen force-pushed the intl_cpp_conversion_1 branch from f33d898 to ccf37e5 Compare October 25, 2026 12:33
@devnexen
devnexen marked this pull request as ready for review October 25, 2026 14:13
@devnexen
devnexen requested a review from LamentXU123 as a code owner October 25, 2026 14:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant