summaryrefslogtreecommitdiff
path: root/ext/standard/array.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2014-04-01 22:36:17 +0400
committerDmitry Stogov <dmitry@zend.com>2014-04-01 22:36:17 +0400
commit6b2ed577fd5c3eeee55be394d8faac50ab8602f9 (patch)
treef8f41cef4dd367e1313f0a69b3a4a2a8352bd9dd /ext/standard/array.c
parent8ddda2f649f3b13db3f4cfc48710637c823464d1 (diff)
downloadphp-git-6b2ed577fd5c3eeee55be394d8faac50ab8602f9.tar.gz
Avoid unnecessry reallocations
Diffstat (limited to 'ext/standard/array.c')
-rw-r--r--ext/standard/array.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c
index 864802ea53..5bbb620282 100644
--- a/ext/standard/array.c
+++ b/ext/standard/array.c
@@ -1433,7 +1433,7 @@ PHP_FUNCTION(extract)
}
} else {
ZVAL_DUP(&data, entry);
- zend_set_local_var(Z_STRVAL(final_name), Z_STRLEN(final_name), &data, 1 TSRMLS_CC);
+ zend_set_local_var(Z_STR(final_name), &data, 1 TSRMLS_CC);
}
count++;
}
@@ -2685,13 +2685,13 @@ PHP_FUNCTION(array_column)
Z_ADDREF_P(zcolval);
}
if (zkeyval && Z_TYPE_P(zkeyval) == IS_STRING) {
- add_assoc_zval(return_value, Z_STRVAL_P(zkeyval), zcolval);
+ zend_symtable_update(Z_ARRVAL_P(return_value), Z_STR_P(zkeyval), zcolval);
} else if (zkeyval && Z_TYPE_P(zkeyval) == IS_LONG) {
add_index_zval(return_value, Z_LVAL_P(zkeyval), zcolval);
} else if (zkeyval && Z_TYPE_P(zkeyval) == IS_OBJECT) {
SEPARATE_ZVAL(zkeyval);
convert_to_string(zkeyval);
- add_assoc_zval(return_value, Z_STRVAL_P(zkeyval), zcolval);
+ zend_symtable_update(Z_ARRVAL_P(return_value), Z_STR_P(zkeyval), zcolval);
} else {
add_next_index_zval(return_value, zcolval);
}
@@ -4492,8 +4492,7 @@ PHP_FUNCTION(array_map)
add_next_index_zval(return_value, &result);
} else {
if (key_type == HASH_KEY_IS_STRING) {
-//???
- add_assoc_zval_ex(return_value, str_key->val, str_key->len, &result);
+ zend_hash_update(Z_ARRVAL_P(return_value), str_key, &result);
} else {
add_index_zval(return_value, num_key, &result);
}
@@ -4588,8 +4587,7 @@ PHP_FUNCTION(array_chunk)
key_type = zend_hash_get_current_key_ex(Z_ARRVAL_P(input), &str_key, &num_key, 0, &pos);
switch (key_type) {
case HASH_KEY_IS_STRING:
-//???
- add_assoc_zval_ex(&chunk, str_key->val, str_key->len, entry);
+ zend_hash_update(Z_ARRVAL(chunk), str_key, entry);
break;
default:
add_index_zval(&chunk, num_key, entry);
@@ -4661,8 +4659,7 @@ PHP_FUNCTION(array_combine)
}
zval_add_ref(entry_values);
-//???
- add_assoc_zval_ex(return_value, Z_STRVAL_P(key_ptr), Z_STRLEN_P(key_ptr), entry_values);
+ zend_symtable_update(Z_ARRVAL_P(return_value), Z_STR_P(key_ptr), entry_values);
if (key_ptr != entry_keys) {
zval_dtor(&key);