mirror of
https://github.com/php/php-src.git
synced 2025-08-15 13:38:49 +02:00
ext/gettext: reland GH-13555 but only for master. (#13602)
This commit is contained in:
parent
ec285ff669
commit
d9549d2ee2
2 changed files with 22 additions and 11 deletions
|
@ -62,6 +62,12 @@ ZEND_GET_MODULE(php_gettext)
|
||||||
RETURN_THROWS(); \
|
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_MINFO_FUNCTION(php_gettext)
|
||||||
{
|
{
|
||||||
php_info_print_table_start();
|
php_info_print_table_start();
|
||||||
|
@ -147,9 +153,7 @@ PHP_FUNCTION(dcgettext)
|
||||||
|
|
||||||
PHP_GETTEXT_DOMAIN_LENGTH_CHECK(1, ZSTR_LEN(domain))
|
PHP_GETTEXT_DOMAIN_LENGTH_CHECK(1, ZSTR_LEN(domain))
|
||||||
PHP_GETTEXT_LENGTH_CHECK(2, ZSTR_LEN(msgid))
|
PHP_GETTEXT_LENGTH_CHECK(2, ZSTR_LEN(msgid))
|
||||||
if (category == LC_ALL) {
|
PHP_DCGETTEXT_CATEGORY_CHECK(3, category)
|
||||||
RETURN_STR_COPY(msgid);
|
|
||||||
}
|
|
||||||
|
|
||||||
msgstr = dcgettext(ZSTR_VAL(domain), ZSTR_VAL(msgid), category);
|
msgstr = dcgettext(ZSTR_VAL(domain), ZSTR_VAL(msgid), category);
|
||||||
|
|
||||||
|
@ -264,9 +268,7 @@ PHP_FUNCTION(dcngettext)
|
||||||
PHP_GETTEXT_DOMAIN_LENGTH_CHECK(1, domain_len)
|
PHP_GETTEXT_DOMAIN_LENGTH_CHECK(1, domain_len)
|
||||||
PHP_GETTEXT_LENGTH_CHECK(2, msgid1_len)
|
PHP_GETTEXT_LENGTH_CHECK(2, msgid1_len)
|
||||||
PHP_GETTEXT_LENGTH_CHECK(3, msgid2_len)
|
PHP_GETTEXT_LENGTH_CHECK(3, msgid2_len)
|
||||||
if (category == LC_ALL) {
|
PHP_DCGETTEXT_CATEGORY_CHECK(5, category)
|
||||||
RETURN_STRING(msgid1);
|
|
||||||
}
|
|
||||||
|
|
||||||
msgstr = dcngettext(domain, msgid1, msgid2, count, category);
|
msgstr = dcngettext(domain, msgid1, msgid2, count, category);
|
||||||
|
|
||||||
|
|
|
@ -4,9 +4,18 @@ dcgettext with LC_ALL is undefined behavior.
|
||||||
gettext
|
gettext
|
||||||
--FILE--
|
--FILE--
|
||||||
<?php
|
<?php
|
||||||
var_dump(dcgettext('dngettextTest', 'item', LC_ALL));
|
try {
|
||||||
var_dump(dcngettext('dngettextTest', 'item', 'item2', 1, LC_ALL));
|
dcgettext('dngettextTest', 'item', LC_ALL);
|
||||||
|
} catch (ValueError $e) {
|
||||||
|
echo $e->getMessage() . PHP_EOL;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
dcngettext('dngettextTest', 'item', 'item2', 1, LC_ALL);
|
||||||
|
} catch (ValueError $e) {
|
||||||
|
echo $e->getMessage();
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECTF--
|
||||||
string(4) "item"
|
dcgettext(): Argument #3 ($category) cannot be LC_ALL
|
||||||
string(4) "item"
|
dcngettext(): Argument #5 ($category) cannot be LC_ALL
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue