Skip to content

ext/intl: Fix Locale::lookup() fallback on invalid language tags#22306

Open
LamentXU123 wants to merge 1 commit into
php:PHP-8.4from
LamentXU123:intl-fix
Open

ext/intl: Fix Locale::lookup() fallback on invalid language tags#22306
LamentXU123 wants to merge 1 commit into
php:PHP-8.4from
LamentXU123:intl-fix

Conversation

@LamentXU123

Copy link
Copy Markdown
Contributor

Locale::lookup() and locale_lookup() should return NUL when it fails. Now they returns the fallback locale even when lookup_loc_range() failed and set an intl error.

For example:

<?php

var_dump(Locale::lookup([''], 'de-DE', false, 'en-US'));
var_dump(intl_get_error_message());

var_dump(locale_lookup([''], 'de-DE', false, 'en-US'));
var_dump(intl_get_error_message());
?>

now returns

string(5) "en-US"
string(75) "lookup_loc_range: unable to canonicalize lang_tag: U_ILLEGAL_ARGUMENT_ERROR"
string(5) "en-US"
string(75) "lookup_loc_range: unable to canonicalize lang_tag: U_ILLEGAL_ARGUMENT_ERROR"

but I expect:

NULL
string(75) "lookup_loc_range: unable to canonicalize lang_tag: U_ILLEGAL_ARGUMENT_ERROR"
NULL
string(75) "lookup_loc_range: unable to canonicalize lang_tag: U_ILLEGAL_ARGUMENT_ERROR"

@LamentXU123 LamentXU123 marked this pull request as ready for review June 14, 2026 15:28
@LamentXU123 LamentXU123 requested a review from devnexen as a code owner June 14, 2026 15:28
Comment thread NEWS Outdated
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.

2 participants