mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
Use ZEND_HASH_FILL_* API for explode()
This commit is contained in:
parent
e86bea8d45
commit
a13a1be734
@ -1032,17 +1032,22 @@ PHPAPI void php_explode(const zend_string *delim, zend_string *str, zval *return
|
||||
ZVAL_STR_COPY(&tmp, str);
|
||||
zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &tmp);
|
||||
} else {
|
||||
zend_hash_real_init_packed(Z_ARRVAL_P(return_value));
|
||||
ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(return_value)) {
|
||||
do {
|
||||
ZVAL_STRINGL_FAST(&tmp, p1, p2 - p1);
|
||||
zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &tmp);
|
||||
ZEND_HASH_FILL_GROW();
|
||||
ZEND_HASH_FILL_SET_STR(zend_string_init_fast(p1, p2 - p1));
|
||||
ZEND_HASH_FILL_NEXT();
|
||||
p1 = p2 + ZSTR_LEN(delim);
|
||||
p2 = php_memnstr(p1, ZSTR_VAL(delim), ZSTR_LEN(delim), endp);
|
||||
} while (p2 != NULL && --limit > 1);
|
||||
|
||||
if (p1 <= endp) {
|
||||
ZVAL_STRINGL(&tmp, p1, endp - p1);
|
||||
zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &tmp);
|
||||
ZEND_HASH_FILL_GROW();
|
||||
ZEND_HASH_FILL_SET_STR(zend_string_init_fast(p1, endp - p1));
|
||||
ZEND_HASH_FILL_NEXT();
|
||||
}
|
||||
} ZEND_HASH_FILL_END();
|
||||
}
|
||||
}
|
||||
/* }}} */
|
||||
|
Loading…
Reference in New Issue
Block a user