zval *input, /* Input array */
*entry; /* An entry in the input array */
zend_array *arrval;
+ zend_long arrlen;
ZEND_PARSE_PARAMETERS_START(1, 1)
Z_PARAM_ARRAY(input)
arrval = Z_ARRVAL_P(input);
/* Return empty input as is */
- if (!zend_hash_num_elements(arrval)) {
+ arrlen = zend_hash_num_elements(arrval);
+ if (!arrlen) {
RETURN_ZVAL(input, 1, 0);
}
/* Return vector-like packed arrays as-is */
- if (HT_IS_PACKED(arrval) && HT_IS_WITHOUT_HOLES(arrval)) {
+ if (HT_IS_PACKED(arrval) && HT_IS_WITHOUT_HOLES(arrval) &&
+ arrval->nNextFreeElement == arrlen) {
RETURN_ZVAL(input, 1, 0);
}