@@ -486,56 +486,55 @@ static void spl_recursive_it_it_construct(INTERNAL_FUNCTION_PARAMETERS, zend_cla
486
486
zend_error_handling error_handling ;
487
487
zval caching_it , aggregate_retval ;
488
488
489
- zend_replace_error_handling (EH_THROW , spl_ce_InvalidArgumentException , & error_handling );
490
-
491
489
switch (rit_type ) {
492
490
case RIT_RecursiveTreeIterator : {
493
491
zval caching_it_flags , * user_caching_it_flags = NULL ;
494
492
mode = RIT_SELF_FIRST ;
495
493
flags = RTIT_BYPASS_KEY ;
496
494
497
- if (zend_parse_parameters_ex (ZEND_PARSE_PARAMS_QUIET , ZEND_NUM_ARGS (), "o|lzl" , & iterator , & flags , & user_caching_it_flags , & mode ) == SUCCESS ) {
498
- if (instanceof_function (Z_OBJCE_P (iterator ), zend_ce_aggregate )) {
499
- zend_call_method_with_0_params (Z_OBJ_P (iterator ), Z_OBJCE_P (iterator ), & Z_OBJCE_P (iterator )-> iterator_funcs_ptr -> zf_new_iterator , "getiterator" , & aggregate_retval );
500
- iterator = & aggregate_retval ;
501
- } else {
502
- Z_ADDREF_P (iterator );
503
- }
495
+ if (zend_parse_parameters (ZEND_NUM_ARGS (), "o|lzl" , & iterator , & flags , & user_caching_it_flags , & mode ) == FAILURE ) {
496
+ RETURN_THROWS ();
497
+ }
504
498
505
- if ( user_caching_it_flags ) {
506
- ZVAL_COPY ( & caching_it_flags , user_caching_it_flags );
507
- } else {
508
- ZVAL_LONG ( & caching_it_flags , CIT_CATCH_GET_CHILD ) ;
509
- }
510
- spl_instantiate_arg_ex2 ( spl_ce_RecursiveCachingIterator , & caching_it , iterator , & caching_it_flags );
511
- zval_ptr_dtor ( & caching_it_flags );
499
+ zend_replace_error_handling ( EH_THROW , spl_ce_InvalidArgumentException , & error_handling );
500
+ if ( instanceof_function ( Z_OBJCE_P ( iterator ), zend_ce_aggregate )) {
501
+ zend_call_method_with_0_params ( Z_OBJ_P ( iterator ), Z_OBJCE_P ( iterator ), & Z_OBJCE_P ( iterator ) -> iterator_funcs_ptr -> zf_new_iterator , "getiterator" , & aggregate_retval );
502
+ iterator = & aggregate_retval ;
503
+ } else {
504
+ Z_ADDREF_P ( iterator );
505
+ }
512
506
513
- zval_ptr_dtor ( iterator );
514
- iterator = & caching_it ;
507
+ if ( user_caching_it_flags ) {
508
+ ZVAL_COPY ( & caching_it_flags , user_caching_it_flags ) ;
515
509
} else {
516
- iterator = NULL ;
510
+ ZVAL_LONG ( & caching_it_flags , CIT_CATCH_GET_CHILD ) ;
517
511
}
512
+ spl_instantiate_arg_ex2 (spl_ce_RecursiveCachingIterator , & caching_it , iterator , & caching_it_flags );
513
+ zval_ptr_dtor (& caching_it_flags );
514
+
515
+ zval_ptr_dtor (iterator );
516
+ iterator = & caching_it ;
518
517
break ;
519
518
}
520
519
case RIT_RecursiveIteratorIterator :
521
520
default : {
522
521
mode = RIT_LEAVES_ONLY ;
523
522
flags = 0 ;
523
+ if (zend_parse_parameters (ZEND_NUM_ARGS (), "o|ll" , & iterator , & mode , & flags ) == FAILURE ) {
524
+ RETURN_THROWS ();
525
+ }
524
526
525
- if (zend_parse_parameters_ex (ZEND_PARSE_PARAMS_QUIET , ZEND_NUM_ARGS (), "o|ll" , & iterator , & mode , & flags ) == SUCCESS ) {
526
- if (instanceof_function (Z_OBJCE_P (iterator ), zend_ce_aggregate )) {
527
- zend_call_method_with_0_params (Z_OBJ_P (iterator ), Z_OBJCE_P (iterator ), & Z_OBJCE_P (iterator )-> iterator_funcs_ptr -> zf_new_iterator , "getiterator" , & aggregate_retval );
528
- iterator = & aggregate_retval ;
529
- } else {
530
- Z_ADDREF_P (iterator );
531
- }
527
+ zend_replace_error_handling (EH_THROW , spl_ce_InvalidArgumentException , & error_handling );
528
+ if (instanceof_function (Z_OBJCE_P (iterator ), zend_ce_aggregate )) {
529
+ zend_call_method_with_0_params (Z_OBJ_P (iterator ), Z_OBJCE_P (iterator ), & Z_OBJCE_P (iterator )-> iterator_funcs_ptr -> zf_new_iterator , "getiterator" , & aggregate_retval );
530
+ iterator = & aggregate_retval ;
532
531
} else {
533
- iterator = NULL ;
532
+ Z_ADDREF_P ( iterator ) ;
534
533
}
535
534
break ;
536
535
}
537
536
}
538
- if (!iterator || ! instanceof_function (Z_OBJCE_P (iterator ), spl_ce_RecursiveIterator )) {
537
+ if (!instanceof_function (Z_OBJCE_P (iterator ), spl_ce_RecursiveIterator )) {
539
538
if (iterator ) {
540
539
zval_ptr_dtor (iterator );
541
540
}
0 commit comments