diff --git a/UPGRADING b/UPGRADING index cc92efb677d..519c1eec415 100644 --- a/UPGRADING +++ b/UPGRADING @@ -196,10 +196,6 @@ PHP 8.3 UPGRADE NOTES . Calling ldap_connect() with separate hostname and port is deprecated. RFC: https://wiki.php.net/rfc/deprecations_php_8_3#deprecate_calling_ldap_connect_with_2_parameters -- Gettext: - . dcgettext/dcngettext throw now an exception if the category's argument if set to - `LC_ALL`. - - MBString . Passing a negative $width to mb_strimwidth() is now deprecated. diff --git a/ext/gettext/gettext.c b/ext/gettext/gettext.c index e7928795b27..15af3cb9b57 100644 --- a/ext/gettext/gettext.c +++ b/ext/gettext/gettext.c @@ -62,12 +62,6 @@ ZEND_GET_MODULE(php_gettext) RETURN_THROWS(); \ } -#define PHP_DCGETTEXT_CATEGORY_CHECK(_arg_num, category) \ - if (category == LC_ALL) { \ - zend_argument_value_error(_arg_num, "cannot be LC_ALL"); \ - RETURN_THROWS(); \ - } - PHP_MINFO_FUNCTION(php_gettext) { php_info_print_table_start(); @@ -153,7 +147,9 @@ PHP_FUNCTION(dcgettext) PHP_GETTEXT_DOMAIN_LENGTH_CHECK(1, ZSTR_LEN(domain)) PHP_GETTEXT_LENGTH_CHECK(2, ZSTR_LEN(msgid)) - PHP_DCGETTEXT_CATEGORY_CHECK(3, category) + if (category == LC_ALL) { + RETURN_STR_COPY(msgid); + } msgstr = dcgettext(ZSTR_VAL(domain), ZSTR_VAL(msgid), category); @@ -268,7 +264,9 @@ PHP_FUNCTION(dcngettext) PHP_GETTEXT_DOMAIN_LENGTH_CHECK(1, domain_len) PHP_GETTEXT_LENGTH_CHECK(2, msgid1_len) PHP_GETTEXT_LENGTH_CHECK(3, msgid2_len) - PHP_DCGETTEXT_CATEGORY_CHECK(5, category) + if (category == LC_ALL) { + RETURN_STRING(msgid1); + } msgstr = dcngettext(domain, msgid1, msgid2, count, category); diff --git a/ext/gettext/tests/dcgettext_lcall.phpt b/ext/gettext/tests/dcgettext_lcall.phpt index 004ae89409e..f44ff298846 100644 --- a/ext/gettext/tests/dcgettext_lcall.phpt +++ b/ext/gettext/tests/dcgettext_lcall.phpt @@ -4,18 +4,9 @@ dcgettext with LC_ALL is undefined behavior. gettext --FILE-- getMessage() . PHP_EOL; -} - -try { - dcngettext('dngettextTest', 'item', 'item2', 1, LC_ALL); -} catch (ValueError $e) { - echo $e->getMessage(); -} +var_dump(dcgettext('dngettextTest', 'item', LC_ALL)); +var_dump(dcngettext('dngettextTest', 'item', 'item2', 1, LC_ALL)); ?> ---EXPECTF-- -dcgettext(): Argument #3 ($category) cannot be LC_ALL -dcngettext(): Argument #5 ($category) cannot be LC_ALL +--EXPECT-- +string(4) "item" +string(4) "item"