@@ -1421,6 +1421,7 @@ static void zend_adjust_fcall_stack_size_graph(zend_op_array *op_array)
14211421int zend_optimize_script (zend_script * script , zend_long optimization_level , zend_long debug_level )
14221422{
14231423 zend_class_entry * ce ;
1424+ zend_string * key ;
14241425 zend_op_array * op_array ;
14251426 zend_string * name ;
14261427 zend_optimizer_ctx ctx ;
@@ -1440,7 +1441,10 @@ int zend_optimize_script(zend_script *script, zend_long optimization_level, zend
14401441 zend_optimize_op_array (op_array , & ctx );
14411442 } ZEND_HASH_FOREACH_END ();
14421443
1443- ZEND_HASH_FOREACH_PTR (& script -> class_table , ce ) {
1444+ ZEND_HASH_FOREACH_STR_KEY_PTR (& script -> class_table , key , ce ) {
1445+ if (ce -> refcount > 1 && !zend_string_equals_ci (key , ce -> name )) {
1446+ continue ;
1447+ }
14441448 ZEND_HASH_FOREACH_STR_KEY_PTR (& ce -> function_table , name , op_array ) {
14451449 if (op_array -> scope == ce && !(op_array -> fn_flags & ZEND_ACC_TRAIT_CLONE )) {
14461450 zend_optimize_op_array (op_array , & ctx );
@@ -1544,7 +1548,10 @@ int zend_optimize_script(zend_script *script, zend_long optimization_level, zend
15441548 zend_adjust_fcall_stack_size (op_array , & ctx );
15451549 } ZEND_HASH_FOREACH_END ();
15461550
1547- ZEND_HASH_FOREACH_PTR (& script -> class_table , ce ) {
1551+ ZEND_HASH_FOREACH_STR_KEY_PTR (& script -> class_table , key , ce ) {
1552+ if (ce -> refcount > 1 && !zend_string_equals_ci (key , ce -> name )) {
1553+ continue ;
1554+ }
15481555 ZEND_HASH_FOREACH_STR_KEY_PTR (& ce -> function_table , name , op_array ) {
15491556 if (op_array -> scope == ce && !(op_array -> fn_flags & ZEND_ACC_TRAIT_CLONE )) {
15501557 zend_adjust_fcall_stack_size (op_array , & ctx );
@@ -1553,7 +1560,10 @@ int zend_optimize_script(zend_script *script, zend_long optimization_level, zend
15531560 } ZEND_HASH_FOREACH_END ();
15541561 }
15551562
1556- ZEND_HASH_FOREACH_PTR (& script -> class_table , ce ) {
1563+ ZEND_HASH_FOREACH_STR_KEY_PTR (& script -> class_table , key , ce ) {
1564+ if (ce -> refcount > 1 && !zend_string_equals_ci (key , ce -> name )) {
1565+ continue ;
1566+ }
15571567 ZEND_HASH_FOREACH_STR_KEY_PTR (& ce -> function_table , name , op_array ) {
15581568 if (op_array -> scope != ce && op_array -> type == ZEND_USER_FUNCTION ) {
15591569 zend_op_array * orig_op_array =
0 commit comments