@@ -1025,12 +1025,12 @@ static void spl_recursive_tree_iterator_get_entry(spl_recursive_it_object * obje
1025
1025
zend_replace_error_handling (EH_THROW , spl_ce_UnexpectedValueException , & error_handling TSRMLS_CC );
1026
1026
if (data && * data ) {
1027
1027
RETVAL_ZVAL (* data , 1 , 0 );
1028
- }
1029
- if ( Z_TYPE_P ( return_value ) == IS_ARRAY ) {
1030
- zval_dtor (return_value );
1031
- ZVAL_STRINGL ( return_value , "Array" , sizeof ( "Array" ) - 1 , 1 );
1032
- } else {
1033
- convert_to_string ( return_value );
1028
+ if ( Z_TYPE_P ( return_value ) == IS_ARRAY ) {
1029
+ zval_dtor ( return_value );
1030
+ ZVAL_STRINGL (return_value , "Array" , sizeof ( "Array" ) - 1 , 1 );
1031
+ } else {
1032
+ convert_to_string ( return_value );
1033
+ }
1034
1034
}
1035
1035
zend_restore_error_handling (& error_handling TSRMLS_CC );
1036
1036
}
@@ -1131,8 +1131,15 @@ SPL_METHOD(RecursiveTreeIterator, current)
1131
1131
}
1132
1132
}
1133
1133
1134
+ INIT_ZVAL (prefix );
1135
+ INIT_ZVAL (entry );
1134
1136
spl_recursive_tree_iterator_get_prefix (object , & prefix TSRMLS_CC );
1135
1137
spl_recursive_tree_iterator_get_entry (object , & entry TSRMLS_CC );
1138
+ if (Z_TYPE (entry ) != IS_STRING ) {
1139
+ zval_dtor (& prefix );
1140
+ zval_dtor (& entry );
1141
+ RETURN_NULL ();
1142
+ }
1136
1143
spl_recursive_tree_iterator_get_postfix (object , & postfix TSRMLS_CC );
1137
1144
1138
1145
str_len = Z_STRLEN (prefix ) + Z_STRLEN (entry ) + Z_STRLEN (postfix );
0 commit comments