@@ -115,7 +115,7 @@ static inline bool spl_array_is_object(spl_array_object *intern) /* {{{ */
115
115
}
116
116
/* }}} */
117
117
118
- static int spl_array_skip_protected (spl_array_object * intern , HashTable * aht );
118
+ static zend_result spl_array_skip_protected (spl_array_object * intern , HashTable * aht );
119
119
120
120
static zend_never_inline void spl_array_create_ht_iter (HashTable * ht , spl_array_object * intern ) /* {{{ */
121
121
{
@@ -552,7 +552,10 @@ static void spl_array_unset_dimension(zend_object *object, zval *offset) /* {{{
552
552
spl_array_unset_dimension_ex (1 , object , offset );
553
553
} /* }}} */
554
554
555
- static int spl_array_has_dimension_ex (bool check_inherited , zend_object * object , zval * offset , int check_empty ) /* {{{ */
555
+ /* check_empty can take value 0, 1, or 2
556
+ * 0/1 are used as normal boolean, but 2 is used for the case when this function is called from
557
+ * the offsetExists() method, in which case it needs to report the offset exist even if the value is null */
558
+ static bool spl_array_has_dimension_ex (bool check_inherited , zend_object * object , zval * offset , int check_empty ) /* {{{ */
556
559
{
557
560
spl_array_object * intern = spl_array_from_obj (object );
558
561
zval rv , * value = NULL , * tmp ;
@@ -873,7 +876,7 @@ static int spl_array_compare_objects(zval *o1, zval *o2) /* {{{ */
873
876
return result ;
874
877
} /* }}} */
875
878
876
- static int spl_array_skip_protected (spl_array_object * intern , HashTable * aht ) /* {{{ */
879
+ static zend_result spl_array_skip_protected (spl_array_object * intern , HashTable * aht ) /* {{{ */
877
880
{
878
881
zend_string * string_key ;
879
882
zend_ulong num_key ;
@@ -903,7 +906,7 @@ static int spl_array_skip_protected(spl_array_object *intern, HashTable *aht) /*
903
906
return FAILURE ;
904
907
} /* }}} */
905
908
906
- static int spl_array_next_ex (spl_array_object * intern , HashTable * aht ) /* {{{ */
909
+ static zend_result spl_array_next_ex (spl_array_object * intern , HashTable * aht ) /* {{{ */
907
910
{
908
911
uint32_t * pos_ptr = spl_array_get_pos_ptr (aht , intern );
909
912
@@ -915,7 +918,7 @@ static int spl_array_next_ex(spl_array_object *intern, HashTable *aht) /* {{{ */
915
918
}
916
919
} /* }}} */
917
920
918
- static int spl_array_next (spl_array_object * intern ) /* {{{ */
921
+ static zend_result spl_array_next (spl_array_object * intern ) /* {{{ */
919
922
{
920
923
HashTable * aht = spl_array_get_hash_table (intern );
921
924
0 commit comments