summaryrefslogtreecommitdiff
path: root/ext/standard/array.c
diff options
context:
space:
mode:
authorAndrei Zmievski <andrei@php.net>2000-06-18 03:43:58 +0000
committerAndrei Zmievski <andrei@php.net>2000-06-18 03:43:58 +0000
commit789aa4804359b0cd1d9a96ac63cea6b85a68572d (patch)
treeb084091c796a8d94bb35627954c1ee470d818013 /ext/standard/array.c
parent6b8afa5d42e394e313348550669aefec7bc849d3 (diff)
downloadphp-git-789aa4804359b0cd1d9a96ac63cea6b85a68572d.tar.gz
@- Modified in_array() to not touch array pointer. (Andrei)
Diffstat (limited to 'ext/standard/array.c')
-rw-r--r--ext/standard/array.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c
index 1b13a0159b..ad08b3340e 100644
--- a/ext/standard/array.c
+++ b/ext/standard/array.c
@@ -1034,6 +1034,7 @@ PHP_FUNCTION(in_array)
**entry, /* pointer to array entry */
res; /* comparison result */
HashTable *target_hash; /* array hashtable */
+ HashPosition pos; /* hash iterator */
int (*compare_func)(zval *, zval *, zval *) = is_equal_function;
if (ZEND_NUM_ARGS() < 2 || ZEND_NUM_ARGS() > 3 ||
@@ -1058,14 +1059,14 @@ PHP_FUNCTION(in_array)
}
target_hash = HASH_OF(*array);
- zend_hash_internal_pointer_reset(target_hash);
+ zend_hash_internal_pointer_reset_ex(target_hash, &pos);
while(zend_hash_get_current_data(target_hash, (void **)&entry) == SUCCESS) {
compare_func(&res, *value, *entry);
if (Z_LVAL(res) == 1) {
RETURN_TRUE;
}
- zend_hash_move_forward(target_hash);
+ zend_hash_move_forward_ex(target_hash, &pos);
}
RETURN_FALSE;