diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2018-06-30 19:41:55 +0200 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2018-06-30 23:15:02 +0200 |
commit | 1118fca75dca112e7a6aa60296626733ccfc4284 (patch) | |
tree | 0abd7479e2bbbabd368ab711964bbf8e5dc40f77 | |
parent | 9b0df97a42749464069859c5ca77c0241a8b05ca (diff) | |
download | php-git-1118fca75dca112e7a6aa60296626733ccfc4284.tar.gz |
Fix #76556: get_debug_info handler for BreakIterator shows wrong type
We use the retrieved type for the "type" element instead of the text.
This has been confused during the PHP 7 upgrade[1].
[1] http://git.php.net/?p=php-src.git;a=commit;h=1d793348067e5769144c0f7efd86428a4137baec
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | ext/intl/breakiterator/breakiterator_class.cpp | 2 | ||||
-rw-r--r-- | ext/intl/tests/bug76556.phpt | 23 |
3 files changed, 28 insertions, 1 deletions
@@ -15,6 +15,10 @@ PHP NEWS . Fixed bug #73342 (Vulnerability in php-fpm by changing stdin to non-blocking). (Nikita) +- intl: + . Fixed bug #76556 (get_debug_info handler for BreakIterator shows wrong + type). (cmb) + - mbstring: . Fixed bug #76532 (Integer overflow and excessive memory usage in mb_strimwidth). (MarcusSchwarz) diff --git a/ext/intl/breakiterator/breakiterator_class.cpp b/ext/intl/breakiterator/breakiterator_class.cpp index ae9e258608..cc3865429c 100644 --- a/ext/intl/breakiterator/breakiterator_class.cpp +++ b/ext/intl/breakiterator/breakiterator_class.cpp @@ -167,7 +167,7 @@ static HashTable *BreakIterator_get_debug_info(zval *object, int *is_temp) } ZVAL_STRING(&val, const_cast<char*>(typeid(*biter).name())); - zend_hash_str_update(debug_info, "type", sizeof("type") - 1, &bio->text); + zend_hash_str_update(debug_info, "type", sizeof("type") - 1, &val); return debug_info; } diff --git a/ext/intl/tests/bug76556.phpt b/ext/intl/tests/bug76556.phpt new file mode 100644 index 0000000000..57395fba2d --- /dev/null +++ b/ext/intl/tests/bug76556.phpt @@ -0,0 +1,23 @@ +--TEST-- +Bug #76556 (get_debug_info handler for BreakIterator shows wrong type) +--SKIPIF-- +<?php +if (!extension_loaded('intl')) die('skip intl extension not available'); +?> +--FILE-- +<?php +$it = IntlBreakIterator::createCharacterInstance(); +$it->setText('foo'); +var_dump($it); +?> +===DONE=== +--EXPECTF-- +object(IntlRuleBasedBreakIterator)#%d (3) { + ["valid"]=> + bool(true) + ["text"]=> + string(3) "foo" + ["type"]=> + string(%d) "%sRuleBasedBreakIterator%s" +} +===DONE=== |