mirror of
https://github.com/php/php-src.git
synced 2024-09-23 10:57:26 +00:00
fix #34723 (array_count_values() strips leading zeroes)
This commit is contained in:
parent
17bc1d09e8
commit
f3e70f5b8c
@ -2726,9 +2726,10 @@ PHP_FUNCTION(array_count_values)
|
||||
} else if (Z_TYPE_PP(entry) == IS_STRING ||
|
||||
Z_TYPE_PP(entry) == IS_BINARY ||
|
||||
Z_TYPE_PP(entry) == IS_UNICODE) {
|
||||
/* make sure our array does not end up with numeric string keys */
|
||||
if ((Z_TYPE_PP(entry) == IS_STRING && is_numeric_string(Z_STRVAL_PP(entry), Z_STRLEN_PP(entry), NULL, NULL, 0) == IS_LONG) ||
|
||||
(Z_TYPE_PP(entry) == IS_UNICODE && is_numeric_unicode(Z_USTRVAL_PP(entry), Z_USTRLEN_PP(entry), NULL, NULL, 0) == IS_LONG)) {
|
||||
/* make sure our array does not end up with numeric string keys
|
||||
* but don't touch those strings that start with 0 */
|
||||
if ((Z_TYPE_PP(entry) == IS_STRING && !(Z_STRLEN_PP(entry) > 1 && Z_STRVAL_PP(entry)[0] == '0') && is_numeric_string(Z_STRVAL_PP(entry), Z_STRLEN_PP(entry), NULL, NULL, 0) == IS_LONG) ||
|
||||
(Z_TYPE_PP(entry) == IS_UNICODE && zend_cmp_unicode_and_literal(Z_USTRVAL_PP(entry), 1, "0", sizeof("0")-1) && is_numeric_unicode(Z_USTRVAL_PP(entry), Z_USTRLEN_PP(entry), NULL, NULL, 0) == IS_LONG)) {
|
||||
zval tmp_entry;
|
||||
|
||||
tmp_entry = **entry;
|
||||
|
Loading…
Reference in New Issue
Block a user