version 1.1.1.2, 2012/05/29 12:34:43
|
version 1.1.1.3, 2013/07/22 01:32:04
|
Line 2
|
Line 2
|
+----------------------------------------------------------------------+ |
+----------------------------------------------------------------------+ |
| PHP Version 5 | |
| PHP Version 5 | |
+----------------------------------------------------------------------+ |
+----------------------------------------------------------------------+ |
| Copyright (c) 1997-2012 The PHP Group | | | Copyright (c) 1997-2013 The PHP Group | |
+----------------------------------------------------------------------+ |
+----------------------------------------------------------------------+ |
| This source file is subject to version 3.01 of the PHP license, | |
| This source file is subject to version 3.01 of the PHP license, | |
| that is bundled with this package in the file LICENSE, and is | |
| that is bundled with this package in the file LICENSE, and is | |
Line 1058 static int php_array_walk(HashTable *target_hash, zval
|
Line 1058 static int php_array_walk(HashTable *target_hash, zval
|
char *string_key; |
char *string_key; |
uint string_key_len; |
uint string_key_len; |
ulong num_key; |
ulong num_key; |
HashPosition pos; |
|
|
|
/* Set up known arguments */ |
/* Set up known arguments */ |
args[1] = &key; |
args[1] = &key; |
Line 1067 static int php_array_walk(HashTable *target_hash, zval
|
Line 1066 static int php_array_walk(HashTable *target_hash, zval
|
Z_ADDREF_P(userdata); |
Z_ADDREF_P(userdata); |
} |
} |
|
|
zend_hash_internal_pointer_reset_ex(target_hash, &pos); |
|
|
|
BG(array_walk_fci).retval_ptr_ptr = &retval_ptr; |
BG(array_walk_fci).retval_ptr_ptr = &retval_ptr; |
BG(array_walk_fci).param_count = userdata ? 3 : 2; |
BG(array_walk_fci).param_count = userdata ? 3 : 2; |
BG(array_walk_fci).params = args; |
BG(array_walk_fci).params = args; |
BG(array_walk_fci).no_separation = 0; |
BG(array_walk_fci).no_separation = 0; |
| |
/* Iterate through hash */ |
/* Iterate through hash */ |
while (!EG(exception) && zend_hash_get_current_data_ex(target_hash, (void **)&args[0], &pos) == SUCCESS) { | zend_hash_internal_pointer_reset(target_hash); |
| while (!EG(exception) && zend_hash_get_current_data(target_hash, (void **)&args[0]) == SUCCESS) { |
if (recursive && Z_TYPE_PP(args[0]) == IS_ARRAY) { |
if (recursive && Z_TYPE_PP(args[0]) == IS_ARRAY) { |
HashTable *thash; |
HashTable *thash; |
zend_fcall_info orig_array_walk_fci; |
zend_fcall_info orig_array_walk_fci; |
Line 1107 static int php_array_walk(HashTable *target_hash, zval
|
Line 1105 static int php_array_walk(HashTable *target_hash, zval
|
MAKE_STD_ZVAL(key); |
MAKE_STD_ZVAL(key); |
|
|
/* Set up the key */ |
/* Set up the key */ |
switch (zend_hash_get_current_key_ex(target_hash, &string_key, &string_key_len, &num_key, 0, &pos)) { | switch (zend_hash_get_current_key_ex(target_hash, &string_key, &string_key_len, &num_key, 0, NULL)) { |
case HASH_KEY_IS_LONG: |
case HASH_KEY_IS_LONG: |
Z_TYPE_P(key) = IS_LONG; |
Z_TYPE_P(key) = IS_LONG; |
Z_LVAL_P(key) = num_key; |
Z_LVAL_P(key) = num_key; |
Line 1135 static int php_array_walk(HashTable *target_hash, zval
|
Line 1133 static int php_array_walk(HashTable *target_hash, zval
|
zval_ptr_dtor(&key); |
zval_ptr_dtor(&key); |
key = NULL; |
key = NULL; |
} |
} |
zend_hash_move_forward_ex(target_hash, &pos); | zend_hash_move_forward(target_hash); |
} |
} |
|
|
if (userdata) { |
if (userdata) { |