sterling Thu Oct 10 15:24:46 2002 EDT Modified files: /php4/ext/standard array.c Log: revert patch Index: php4/ext/standard/array.c diff -u php4/ext/standard/array.c:1.196 php4/ext/standard/array.c:1.197 --- php4/ext/standard/array.c:1.196 Wed Oct 9 14:29:45 2002 +++ php4/ext/standard/array.c Thu Oct 10 15:24:45 2002 @@ -21,7 +21,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: array.c,v 1.196 2002/10/09 18:29:45 sterling Exp $ */ +/* $Id: array.c,v 1.197 2002/10/10 19:24:45 sterling Exp $ */ #include "php.h" #include "php_ini.h" @@ -705,16 +705,21 @@ Move array argument's internal pointer to the previous element and return it */ PHP_FUNCTION(prev) { - zval **entry; - zval *array; + pval **array, **entry; + HashTable *target_hash; - if (zend_parse_parameters(1 TSRMLS_CC, "a", &array) == FAILURE) { + if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &array) == FAILURE) { + WRONG_PARAM_COUNT; + } + target_hash = HASH_OF(*array); + if (!target_hash) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Passed variable is not an +array or object"); RETURN_FALSE; } - zend_hash_move_backwards(Z_ARRVAL_P(array)); + zend_hash_move_backwards(target_hash); if (return_value_used) { - if (zend_hash_get_current_data(Z_ARRVAL_P(array), (void **) &entry) == FAILURE) { + if (zend_hash_get_current_data(target_hash, (void **) &entry) == +FAILURE) { RETURN_FALSE; } @@ -728,16 +733,21 @@ Move array argument's internal pointer to the next element and return it */ PHP_FUNCTION(next) { - zval **entry; - zval *array; + pval **array, **entry; + HashTable *target_hash; - if (zend_parse_parameters(1 TSRMLS_CC, "a", &array) == FAILURE) { + if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &array) == FAILURE) { + WRONG_PARAM_COUNT; + } + target_hash = HASH_OF(*array); + if (!target_hash) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Passed variable is not an +array or object"); RETURN_FALSE; } - zend_hash_move_forward(Z_ARRVAL_P(array)); + zend_hash_move_forward(target_hash); if (return_value_used) { - if (zend_hash_get_current_data(Z_ARRVAL_P(array), (void **) &entry) == FAILURE) { + if (zend_hash_get_current_data(target_hash, (void **) &entry) == +FAILURE) { RETURN_FALSE; } @@ -751,16 +761,21 @@ Set array argument's internal pointer to the first element and return it */ PHP_FUNCTION(reset) { - zval **entry; - zval *array; + pval **array, **entry; + HashTable *target_hash; - if (zend_parse_parameters(1 TSRMLS_CC, "a", &array) == FAILURE) { + if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &array) == FAILURE) { + WRONG_PARAM_COUNT; + } + target_hash = HASH_OF(*array); + if (!target_hash) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Passed variable is not an +array or object"); RETURN_FALSE; } - zend_hash_internal_pointer_reset(Z_ARRVAL_P(array)); + zend_hash_internal_pointer_reset(target_hash); if (return_value_used) { - if (zend_hash_get_current_data(Z_ARRVAL_P(array), (void **) &entry) == FAILURE) { + if (zend_hash_get_current_data(target_hash, (void **) &entry) == +FAILURE) { RETURN_FALSE; } @@ -774,17 +789,20 @@ Return the element currently pointed to by the internal array pointer */ PHP_FUNCTION(current) { - zval **entry; - zval *array; + pval **array, **entry; + HashTable *target_hash; - if (zend_parse_parameters(1 TSRMLS_CC, "a", &array) == FAILURE) { + if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &array) == FAILURE) { + WRONG_PARAM_COUNT; + } + target_hash = HASH_OF(*array); + if (!target_hash) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Passed variable is not an +array or object"); RETURN_FALSE; } - - if (zend_hash_get_current_data(Z_ARRVAL_P(array), (void **) &entry) == FAILURE) { + if (zend_hash_get_current_data(target_hash, (void **) &entry) == FAILURE) { RETURN_FALSE; } - *return_value = **entry; zval_copy_ctor(return_value); } @@ -794,27 +812,29 @@ Return the key of the element currently pointed to by the internal array pointer */ PHP_FUNCTION(key) { - zval *array; - char *string_key; - uint string_key_length; - ulong num_key = -1; + pval **array; + char *string_key; + uint string_length; + ulong num_key; + HashTable *target_hash; - if (zend_parse_parameters(1 TSRMLS_CC, "a", &array) == FAILURE) { + if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &array) == FAILURE) { + WRONG_PARAM_COUNT; + } + target_hash = HASH_OF(*array); + if (!target_hash) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Passed variable is not an +array or object"); RETURN_FALSE; } - - switch (zend_hash_get_current_key_ex(Z_ARRVAL_P(array), - &string_key, - &string_key_length, - &num_key, - 0, - NULL)) { + switch (zend_hash_get_current_key_ex(target_hash, &string_key, &string_length, +&num_key, 0, NULL)) { case HASH_KEY_IS_STRING: - RETURN_STRINGL(string_key, string_key_length - 1, 1); + RETVAL_STRINGL(string_key, string_length - 1, 1); + break; case HASH_KEY_IS_LONG: - RETURN_LONG(num_key); - default: - RETURN_NULL(); + RETVAL_LONG(num_key); + break; + case HASH_KEY_NON_EXISTANT: + return; } } /* }}} */
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php