From: Andrei Zmievski Date: Sun, 18 Jun 2000 03:43:58 +0000 (+0000) Subject: @- Modified in_array() to not touch array pointer. (Andrei) X-Git-Tag: php-4.0.1RC~107 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=789aa4804359b0cd1d9a96ac63cea6b85a68572d;p=php @- Modified in_array() to not touch array pointer. (Andrei) --- 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;