summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXinchen Hui <laruence@php.net>2014-05-07 17:06:27 +0800
committerXinchen Hui <laruence@php.net>2014-05-07 17:06:27 +0800
commit2393000aeb6be8f7dd9e33585b96bb279f4f1eff (patch)
tree784ba337ad660c887ba38218e9e1c67a15201de4
parente3a08096553df89b1c73eafdd9fd1ca2288cdce0 (diff)
downloadphp-git-2393000aeb6be8f7dd9e33585b96bb279f4f1eff.tar.gz
Prefer the macro we defined
-rw-r--r--main/php_variables.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/main/php_variables.c b/main/php_variables.c
index c67642c76f..30a84822af 100644
--- a/main/php_variables.c
+++ b/main/php_variables.c
@@ -625,22 +625,19 @@ static void php_autoglobal_merge(HashTable *dest, HashTable *src TSRMLS_DC)
zval *src_entry, *dest_entry;
zend_string *string_key;
ulong num_key;
- HashPosition pos;
- int key_type;
int globals_check = (dest == (&EG(symbol_table).ht));
- zend_hash_internal_pointer_reset_ex(src, &pos);
- while ((src_entry = zend_hash_get_current_data_ex(src, &pos)) != NULL) {
- key_type = zend_hash_get_current_key_ex(src, &string_key, &num_key, 0, &pos);
+ ZEND_HASH_FOREACH_KEY_VAL(src, num_key, string_key, src_entry) {
if (Z_TYPE_P(src_entry) != IS_ARRAY
- || (key_type == HASH_KEY_IS_STRING && (dest_entry = zend_hash_find(dest, string_key)) == NULL)
- || (key_type == HASH_KEY_IS_LONG && (dest_entry = zend_hash_index_find(dest, num_key)) == NULL)
+ || (string_key && (dest_entry = zend_hash_find(dest, string_key)) == NULL)
+ || (string_key == NULL && (dest_entry = zend_hash_index_find(dest, num_key)) == NULL)
|| Z_TYPE_P(dest_entry) != IS_ARRAY) {
if (Z_REFCOUNTED_P(src_entry)) {
Z_ADDREF_P(src_entry);
}
- if (key_type == HASH_KEY_IS_STRING) {
- if (!globals_check || string_key->len != sizeof("GLOBALS") || memcmp(string_key->val, "GLOBALS", sizeof("GLOBALS") - 1)) {
+ if (string_key) {
+ if (!globals_check || string_key->len != sizeof("GLOBALS") - 1
+ || memcmp(string_key->val, "GLOBALS", sizeof("GLOBALS") - 1)) {
zend_hash_update(dest, string_key, src_entry);
} else if (Z_REFCOUNTED_P(src_entry)) {
Z_DELREF_P(src_entry);
@@ -652,8 +649,7 @@ static void php_autoglobal_merge(HashTable *dest, HashTable *src TSRMLS_DC)
SEPARATE_ZVAL(dest_entry);
php_autoglobal_merge(Z_ARRVAL_P(dest_entry), Z_ARRVAL_P(src_entry) TSRMLS_CC);
}
- zend_hash_move_forward_ex(src, &pos);
- }
+ } ZEND_HASH_FOREACH_END();
}
/* }}} */