@@ -1162,29 +1162,20 @@ PHP_METHOD(Phar, __construct)
11621162 phar_obj -> archive = phar_data ;
11631163 phar_obj -> spl .oth_handler = & phar_spl_foreign_handler ;
11641164
1165- zend_string * file_name_for_recursive_director_iterator_constructor ;
11661165 if (entry ) {
1167- file_name_for_recursive_director_iterator_constructor = zend_string_concat3 (
1168- ZEND_STRL ("phar://" ),
1169- phar_data -> fname , phar_data -> fname_len ,
1170- ZSTR_VAL (entry ), ZSTR_LEN (entry )
1171- );
1166+ fname_len = spprintf (& fname , 0 , "phar://%s%s" , phar_data -> fname , ZSTR_VAL (entry ));
11721167 zend_string_release_ex (entry , false);
11731168 } else {
1174- file_name_for_recursive_director_iterator_constructor = zend_string_concat2 (
1175- ZEND_STRL ("phar://" ),
1176- phar_data -> fname , phar_data -> fname_len
1177- );
1169+ fname_len = spprintf (& fname , 0 , "phar://%s" , phar_data -> fname );
11781170 }
11791171
1180- ZVAL_STR (& arg1 , file_name_for_recursive_director_iterator_constructor );
1172+ ZVAL_STRINGL (& arg1 , fname , fname_len );
11811173 ZVAL_LONG (& arg2 , flags );
11821174
11831175 zend_call_known_instance_method_with_2_params (spl_ce_RecursiveDirectoryIterator -> constructor ,
11841176 Z_OBJ_P (ZEND_THIS ), NULL , & arg1 , & arg2 );
11851177
1186- /* Freeing arg1 */
1187- zend_string_release_ex (file_name_for_recursive_director_iterator_constructor , false);
1178+ zval_ptr_dtor (& arg1 );
11881179
11891180 if (!phar_data -> is_persistent ) {
11901181 phar_obj -> archive -> is_data = is_data ;
@@ -1194,6 +1185,7 @@ PHP_METHOD(Phar, __construct)
11941185 }
11951186
11961187 phar_obj -> spl .info_class = phar_ce_entry ;
1188+ efree (fname );
11971189}
11981190/* }}} */
11991191
0 commit comments