diff --git a/ext/standard/password.c b/ext/standard/password.c index 1e647bb301c3..a94fd08a3b9c 100644 --- a/ext/standard/password.c +++ b/ext/standard/password.c @@ -665,9 +665,11 @@ PHP_FUNCTION(password_algos) { ZEND_PARSE_PARAMETERS_NONE(); - array_init(return_value); + size_t i = 0; + array_init_size(return_value, zend_hash_num_elements(&php_password_algos)); + zend_hash_real_init_packed(Z_ARRVAL_P(return_value)); ZEND_HASH_MAP_FOREACH_STR_KEY(&php_password_algos, algo) { - add_next_index_str(return_value, zend_string_copy(algo)); + add_index_str(return_value, i++, zend_string_copy(algo)); } ZEND_HASH_FOREACH_END(); } /* }}} */