@@ -2212,11 +2212,12 @@ static zend_object *spl_dual_it_new(zend_class_entry *class_type)
22122212static inline int spl_limit_it_valid (spl_dual_it_object * intern )
22132213{
22142214 /* FAILURE / SUCCESS */
2215- if (intern -> u .limit .count != -1 && intern -> current .pos >= intern -> u .limit .offset + intern -> u .limit .count ) {
2215+ if (intern -> u .limit .count != -1 &&
2216+ (intern -> current .pos - intern -> u .limit .offset ) >= intern -> u .limit .count ) {
22162217 return FAILURE ;
2217- } else {
2218- return spl_dual_it_valid (intern );
22192218 }
2219+
2220+ return spl_dual_it_valid (intern );
22202221}
22212222
22222223static inline void spl_limit_it_seek (spl_dual_it_object * intern , zend_long pos )
@@ -2289,7 +2290,7 @@ PHP_METHOD(LimitIterator, valid)
22892290 SPL_FETCH_AND_CHECK_DUAL_IT (intern , ZEND_THIS );
22902291
22912292/* RETURN_BOOL(spl_limit_it_valid(intern) == SUCCESS);*/
2292- RETURN_BOOL ((intern -> u .limit .count == -1 || intern -> current .pos < intern -> u .limit .offset + intern -> u .limit .count ) && Z_TYPE (intern -> current .data ) != IS_UNDEF );
2293+ RETURN_BOOL ((intern -> u .limit .count == -1 || ( intern -> current .pos - intern -> u .limit .offset ) < intern -> u .limit .count ) && Z_TYPE (intern -> current .data ) != IS_UNDEF );
22932294} /* }}} */
22942295
22952296/* {{{ Move the iterator forward */
@@ -2304,7 +2305,7 @@ PHP_METHOD(LimitIterator, next)
23042305 SPL_FETCH_AND_CHECK_DUAL_IT (intern , ZEND_THIS );
23052306
23062307 spl_dual_it_next (intern , 1 );
2307- if (intern -> u .limit .count == -1 || intern -> current .pos < intern -> u .limit .offset + intern -> u .limit .count ) {
2308+ if (intern -> u .limit .count == -1 || ( intern -> current .pos - intern -> u .limit .offset ) < intern -> u .limit .count ) {
23082309 spl_dual_it_fetch (intern , 1 );
23092310 }
23102311} /* }}} */
0 commit comments