diff options
author | Anatol Belski <ab@php.net> | 2018-10-05 22:53:11 +0200 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2018-10-05 22:53:11 +0200 |
commit | 55e0bc9532e1e3f9dd9e0c380498c23f0e71027a (patch) | |
tree | da2eca01c57b3e96036d6592793ed3660e95fc6c /ext/intl | |
parent | 05a884f6393b1a19f103c2b358e736b20c0f7d46 (diff) | |
parent | a7754286d20fd68310aa4532a005fc2b71519591 (diff) | |
download | php-git-55e0bc9532e1e3f9dd9e0c380498c23f0e71027a.tar.gz |
Merge branch 'PHP-7.2' into PHP-7.3
* PHP-7.2:
Add test for bug #76942
Fixed Bug #76942 U_ARGUMENT_TYPE_MISMATCH
Diffstat (limited to 'ext/intl')
-rw-r--r-- | ext/intl/msgformat/msgformat_helpers.cpp | 3 | ||||
-rw-r--r-- | ext/intl/tests/bug74484_MessageFormatter.phpt | 2 | ||||
-rw-r--r-- | ext/intl/tests/bug76942_MessageFormatter.phpt | 33 |
3 files changed, 38 insertions, 0 deletions
diff --git a/ext/intl/msgformat/msgformat_helpers.cpp b/ext/intl/msgformat/msgformat_helpers.cpp index 7d307ccc0c..f8e3273f5d 100644 --- a/ext/intl/msgformat/msgformat_helpers.cpp +++ b/ext/intl/msgformat/msgformat_helpers.cpp @@ -46,6 +46,7 @@ extern "C" { #if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM >= 48 #define HAS_MESSAGE_PATTERN 1 +#define HAS_MISALLOCATE_MEMORY_BUG 1 #endif U_NAMESPACE_BEGIN @@ -334,6 +335,7 @@ static void umsg_set_timezone(MessageFormatter_object *mfo, return; /* already done */ } +#ifdef HAS_MISALLOCATE_MEMORY_BUG /* There is a bug in ICU which prevents MessageFormatter::getFormats() to handle more than 10 formats correctly. The enumerator could be used to walk through the present formatters using getFormat(), which @@ -351,6 +353,7 @@ static void umsg_set_timezone(MessageFormatter_object *mfo, if (count > 10) { return; } +#endif formats = mf->getFormats(count); diff --git a/ext/intl/tests/bug74484_MessageFormatter.phpt b/ext/intl/tests/bug74484_MessageFormatter.phpt index b48de33525..d3b29a58a4 100644 --- a/ext/intl/tests/bug74484_MessageFormatter.phpt +++ b/ext/intl/tests/bug74484_MessageFormatter.phpt @@ -4,6 +4,8 @@ Bug #74484 MessageFormatter::formatMessage memory corruption with 11+ named plac <?php if (!extension_loaded('intl')) die('skip intl extension not enabled'); +if (version_compare(INTL_ICU_VERSION, '4.8') < 0) + die('skip for ICU 4.8+'); ?> --FILE-- <?php diff --git a/ext/intl/tests/bug76942_MessageFormatter.phpt b/ext/intl/tests/bug76942_MessageFormatter.phpt new file mode 100644 index 0000000000..baafb00ced --- /dev/null +++ b/ext/intl/tests/bug76942_MessageFormatter.phpt @@ -0,0 +1,33 @@ +--TEST-- +Bug #76942 U_ARGUMENT_TYPE_MISMATCH +--SKIPIF-- +<?php +if (!extension_loaded('intl')) + die('skip intl extension not enabled'); +?> +--FILE-- +<?php + +$locale = 'nl'; +$message = '{0,number,#,###.##} MB'; +$vars = [ + 7.1234 +]; + +$formatter = new MessageFormatter($locale, $message); +if (!$formatter) { + throw new Exception(intl_get_error_message(), intl_get_error_code()); +} + +$result = $formatter->format($vars); +if ($result === false) { + throw new Exception($formatter->getErrorMessage(), $formatter->getErrorCode()); +} + +var_dump($result); + +?> +==DONE== +--EXPECT-- +string(7) "7,12 MB" +==DONE== |