From 9f957fd303712b55370f8154de19ee15e2c1237a Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Tue, 17 Jul 2018 11:53:06 +0200 Subject: [PATCH] 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! --- ext/standard/array.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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); } -- 2.40.0