diff options
author | Dmitry Stogov <dmitry@zend.com> | 2014-05-27 00:38:58 +0400 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2014-05-27 00:38:58 +0400 |
commit | e34a6e9211559827d7747e028f46ebe92e334d2d (patch) | |
tree | 32b770ce3cc8fa4ef707c513d4fb16930bd57f4f /Zend/zend_builtin_functions.c | |
parent | 05d0df4706f7b7a499a9569cde0939e252491afc (diff) | |
download | php-git-e34a6e9211559827d7747e028f46ebe92e334d2d.tar.gz |
Use new zend_hash API
Diffstat (limited to 'Zend/zend_builtin_functions.c')
-rw-r--r-- | Zend/zend_builtin_functions.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index e8e4c54e9c..cbbdd1e681 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -582,7 +582,6 @@ ZEND_FUNCTION(each) { zval *array, *entry, tmp; ulong num_key; - zval *inserted_pointer; HashTable *target_hash; zend_string *key; @@ -609,7 +608,8 @@ ZEND_FUNCTION(each) } break; } - array_init(return_value); + array_init_size(return_value, 4); + zend_hash_real_init(Z_ARRVAL_P(return_value), 0); /* add value elements */ if (Z_ISREF_P(entry)) { @@ -620,17 +620,18 @@ ZEND_FUNCTION(each) if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry); if (Z_REFCOUNTED_P(entry)) Z_ADDREF_P(entry); } - zend_hash_index_update(Z_ARRVAL_P(return_value), 1, entry); + zend_hash_index_add_new(Z_ARRVAL_P(return_value), 1, entry); zend_hash_str_add_new(Z_ARRVAL_P(return_value), "value", sizeof("value")-1, entry); /* add the key elements */ if (zend_hash_get_current_key(target_hash, &key, &num_key, 0) == HASH_KEY_IS_STRING) { - inserted_pointer = add_get_index_str(return_value, 0, STR_COPY(key)); + ZVAL_STR(&tmp, STR_COPY(key)); + if (Z_REFCOUNTED(tmp)) Z_ADDREF(tmp); } else { - inserted_pointer = add_get_index_long(return_value, 0, num_key); + ZVAL_LONG(&tmp, num_key); } - zend_hash_str_add_new(Z_ARRVAL_P(return_value), "key", sizeof("key")-1, inserted_pointer); - if (Z_REFCOUNTED_P(inserted_pointer)) Z_ADDREF_P(inserted_pointer); + zend_hash_index_add_new(Z_ARRVAL_P(return_value), 0, &tmp); + zend_hash_str_add_new(Z_ARRVAL_P(return_value), "key", sizeof("key")-1, &tmp); zend_hash_move_forward(target_hash); } /* }}} */ |