From: Christoph M. Becker Date: Tue, 17 Jul 2018 09:53:06 +0000 (+0200) Subject: Improve implementation of array_key_first() and array_key_last() X-Git-Tag: php-7.3.0alpha4~5 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9f957fd303712b55370f8154de19ee15e2c1237a;p=php Improve implementation of array_key_first() and array_key_last() Firstly, we must not separate the $stack argument for performance reasons. Secondly, we prefer `Z_ARRVAL_P` over `HASH_OF` to clarify our intention. Thanks to Nikita, for catching these issues! --- diff --git a/ext/standard/array.c b/ext/standard/array.c index 82e0833e34..ec402eac36 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -3970,10 +3970,10 @@ PHP_FUNCTION(array_key_first) zval *stack; /* Input stack */ ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY_EX(stack, 0, 1) + Z_PARAM_ARRAY(stack) ZEND_PARSE_PARAMETERS_END(); - HashTable *target_hash = HASH_OF(stack); + HashTable *target_hash = Z_ARRVAL_P (stack); HashPosition pos = 0; zend_hash_get_current_key_zval_ex(target_hash, return_value, &pos); } @@ -3987,10 +3987,10 @@ PHP_FUNCTION(array_key_last) HashPosition pos; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_ARRAY_EX(stack, 0, 1) + Z_PARAM_ARRAY(stack) ZEND_PARSE_PARAMETERS_END(); - HashTable *target_hash = HASH_OF(stack); + HashTable *target_hash = Z_ARRVAL_P (stack); zend_hash_internal_pointer_end_ex(target_hash, &pos); zend_hash_get_current_key_zval_ex(target_hash, return_value, &pos); }