@@ -1032,17 +1032,22 @@ PHPAPI void php_explode(const zend_string *delim, zend_string *str, zval *return
1032
1032
ZVAL_STR_COPY (& tmp , str );
1033
1033
zend_hash_next_index_insert_new (Z_ARRVAL_P (return_value ), & tmp );
1034
1034
} else {
1035
- do {
1036
- ZVAL_STRINGL_FAST (& tmp , p1 , p2 - p1 );
1037
- zend_hash_next_index_insert_new (Z_ARRVAL_P (return_value ), & tmp );
1038
- p1 = p2 + ZSTR_LEN (delim );
1039
- p2 = php_memnstr (p1 , ZSTR_VAL (delim ), ZSTR_LEN (delim ), endp );
1040
- } while (p2 != NULL && -- limit > 1 );
1041
-
1042
- if (p1 <= endp ) {
1043
- ZVAL_STRINGL (& tmp , p1 , endp - p1 );
1044
- zend_hash_next_index_insert_new (Z_ARRVAL_P (return_value ), & tmp );
1045
- }
1035
+ zend_hash_real_init_packed (Z_ARRVAL_P (return_value ));
1036
+ ZEND_HASH_FILL_PACKED (Z_ARRVAL_P (return_value )) {
1037
+ do {
1038
+ ZEND_HASH_FILL_GROW ();
1039
+ ZEND_HASH_FILL_SET_STR (zend_string_init_fast (p1 , p2 - p1 ));
1040
+ ZEND_HASH_FILL_NEXT ();
1041
+ p1 = p2 + ZSTR_LEN (delim );
1042
+ p2 = php_memnstr (p1 , ZSTR_VAL (delim ), ZSTR_LEN (delim ), endp );
1043
+ } while (p2 != NULL && -- limit > 1 );
1044
+
1045
+ if (p1 <= endp ) {
1046
+ ZEND_HASH_FILL_GROW ();
1047
+ ZEND_HASH_FILL_SET_STR (zend_string_init_fast (p1 , endp - p1 ));
1048
+ ZEND_HASH_FILL_NEXT ();
1049
+ }
1050
+ } ZEND_HASH_FILL_END ();
1046
1051
}
1047
1052
}
1048
1053
/* }}} */
0 commit comments