diff --git a/ext/standard/array.c b/ext/standard/array.c index 213402c7819a..0df44f8242ba 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -4896,7 +4896,7 @@ PHP_FUNCTION(array_change_key_case) ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(array), num_key, string_key, entry) { if (!string_key) { - entry = zend_hash_index_update(Z_ARRVAL_P(return_value), num_key, entry); + entry = zend_hash_index_add_new(Z_ARRVAL_P(return_value), num_key, entry); } else { if (change_to_upper == PHP_CASE_UPPER) { new_key = zend_string_toupper(string_key); diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 3438d6037526..3699564169b5 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -1078,9 +1078,9 @@ PHP_FUNCTION(getopt) if (Z_TYPE_P(args) != IS_ARRAY) { convert_to_array(args); } - zend_hash_next_index_insert(Z_ARRVAL_P(args), &val); + zend_hash_next_index_insert_new(Z_ARRVAL_P(args), &val); } else { - zend_hash_index_update(Z_ARRVAL_P(return_value), opt_name_as_long, &val); + zend_hash_index_add_new(Z_ARRVAL_P(return_value), opt_name_as_long, &val); } } else { /* other strings */ @@ -1088,9 +1088,9 @@ PHP_FUNCTION(getopt) if (Z_TYPE_P(args) != IS_ARRAY) { convert_to_array(args); } - zend_hash_next_index_insert(Z_ARRVAL_P(args), &val); + zend_hash_next_index_insert_new(Z_ARRVAL_P(args), &val); } else { - zend_hash_str_add(Z_ARRVAL_P(return_value), optname, optname_len, &val); + zend_hash_str_add_new(Z_ARRVAL_P(return_value), optname, optname_len, &val); } } @@ -1424,20 +1424,20 @@ PHP_FUNCTION(error_get_last) array_init(return_value); ZVAL_LONG(&tmp, PG(last_error_type)); - zend_hash_update(Z_ARR_P(return_value), ZSTR_KNOWN(ZEND_STR_TYPE), &tmp); + zend_hash_add_new(Z_ARR_P(return_value), ZSTR_KNOWN(ZEND_STR_TYPE), &tmp); ZVAL_STR_COPY(&tmp, PG(last_error_message)); - zend_hash_update(Z_ARR_P(return_value), ZSTR_KNOWN(ZEND_STR_MESSAGE), &tmp); + zend_hash_add_new(Z_ARR_P(return_value), ZSTR_KNOWN(ZEND_STR_MESSAGE), &tmp); ZVAL_STR_COPY(&tmp, PG(last_error_file)); - zend_hash_update(Z_ARR_P(return_value), ZSTR_KNOWN(ZEND_STR_FILE), &tmp); + zend_hash_add_new(Z_ARR_P(return_value), ZSTR_KNOWN(ZEND_STR_FILE), &tmp); ZVAL_LONG(&tmp, (zend_long)PG(last_error_lineno)); - zend_hash_update(Z_ARR_P(return_value), ZSTR_KNOWN(ZEND_STR_LINE), &tmp); + zend_hash_add_new(Z_ARR_P(return_value), ZSTR_KNOWN(ZEND_STR_LINE), &tmp); if (!Z_ISUNDEF(EG(last_fatal_error_backtrace))) { ZVAL_COPY(&tmp, &EG(last_fatal_error_backtrace)); - zend_hash_update(Z_ARR_P(return_value), ZSTR_KNOWN(ZEND_STR_TRACE), &tmp); + zend_hash_add_new(Z_ARR_P(return_value), ZSTR_KNOWN(ZEND_STR_TRACE), &tmp); } } } diff --git a/ext/standard/file.c b/ext/standard/file.c index b52e5ba9525f..50e1ef5fa4c3 100644 --- a/ext/standard/file.c +++ b/ext/standard/file.c @@ -1387,7 +1387,7 @@ PHPAPI void php_fstat(php_stream *stream, zval *return_value) php_stream_statbuf stat_ssb; zval stat_dev, stat_ino, stat_mode, stat_nlink, stat_uid, stat_gid, stat_rdev, stat_size, stat_atime, stat_mtime, stat_ctime, stat_blksize, stat_blocks; - char *stat_sb_names[13] = { + char *stat_sb_names[] = { "dev", "ino", "mode", "nlink", "uid", "gid", "rdev", "size", "atime", "mtime", "ctime", "blksize", "blocks" }; @@ -1396,7 +1396,8 @@ PHPAPI void php_fstat(php_stream *stream, zval *return_value) RETURN_FALSE; } - array_init(return_value); + array_init_size(return_value, 2 * (sizeof(stat_sb_names) / sizeof(*stat_sb_names))); + zend_hash_real_init_mixed(Z_ARRVAL_P(return_value)); ZVAL_LONG(&stat_dev, stat_ssb.sb.st_dev); ZVAL_LONG(&stat_ino, stat_ssb.sb.st_ino); @@ -1424,19 +1425,19 @@ PHPAPI void php_fstat(php_stream *stream, zval *return_value) ZVAL_LONG(&stat_blocks,-1); #endif /* Store numeric indexes in proper order */ - zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &stat_dev); - zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &stat_ino); - zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &stat_mode); - zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &stat_nlink); - zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &stat_uid); - zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &stat_gid); - zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &stat_rdev); - zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &stat_size); - zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &stat_atime); - zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &stat_mtime); - zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &stat_ctime); - zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &stat_blksize); - zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &stat_blocks); + zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &stat_dev); + zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &stat_ino); + zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &stat_mode); + zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &stat_nlink); + zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &stat_uid); + zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &stat_gid); + zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &stat_rdev); + zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &stat_size); + zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &stat_atime); + zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &stat_mtime); + zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &stat_ctime); + zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &stat_blksize); + zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &stat_blocks); /* Store string indexes referencing the same zval*/ zend_hash_str_add_new(Z_ARRVAL_P(return_value), stat_sb_names[0], strlen(stat_sb_names[0]), &stat_dev); @@ -1903,7 +1904,7 @@ PHPAPI HashTable *php_bc_fgetcsv_empty_line(void) HashTable *values = zend_new_array(1); zval tmp; ZVAL_NULL(&tmp); - zend_hash_next_index_insert(values, &tmp); + zend_hash_next_index_insert_new(values, &tmp); return values; } @@ -2162,7 +2163,7 @@ PHPAPI HashTable *php_fgetcsv(php_stream *stream, char delimiter, char enclosure zval z_tmp; ZVAL_STRINGL(&z_tmp, temp, comp_end - temp); - zend_hash_next_index_insert(values, &z_tmp); + zend_hash_next_index_insert_new(values, &z_tmp); } while (inc_len > 0); efree(temp); diff --git a/ext/standard/filestat.c b/ext/standard/filestat.c index 13478b6f5c31..2a52a6c5f1dc 100644 --- a/ext/standard/filestat.c +++ b/ext/standard/filestat.c @@ -935,7 +935,8 @@ PHPAPI void php_stat(zend_string *filename, int type, zval *return_value) }; size_t i, size_stat_sb = sizeof(stat_sb_addresses) / sizeof(*stat_sb_addresses); - array_init(return_value); + array_init_size(return_value, 2 * size_stat_sb); + zend_hash_real_init_mixed(Z_ARRVAL_P(return_value)); ZVAL_LONG(&stat_dev, stat_sb->st_dev); ZVAL_LONG(&stat_ino, stat_sb->st_ino); @@ -964,7 +965,7 @@ PHPAPI void php_stat(zend_string *filename, int type, zval *return_value) #endif for (i = 0; i < size_stat_sb; i++) { /* Store numeric indexes in proper order */ - zend_hash_next_index_insert(Z_ARRVAL_P(return_value), stat_sb_addresses[i]); + zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), stat_sb_addresses[i]); } for (i = 0; i < size_stat_sb; i++) {