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!
This commit is contained in:
Christoph M. Becker 2018-07-17 11:53:06 +02:00
parent 50516a6e1f
commit 9f957fd303

View File

@ -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);
}