@@ -1421,6 +1421,7 @@ static void zend_adjust_fcall_stack_size_graph(zend_op_array *op_array)
1421
1421
int zend_optimize_script (zend_script * script , zend_long optimization_level , zend_long debug_level )
1422
1422
{
1423
1423
zend_class_entry * ce ;
1424
+ zend_string * key ;
1424
1425
zend_op_array * op_array ;
1425
1426
zend_string * name ;
1426
1427
zend_optimizer_ctx ctx ;
@@ -1440,7 +1441,10 @@ int zend_optimize_script(zend_script *script, zend_long optimization_level, zend
1440
1441
zend_optimize_op_array (op_array , & ctx );
1441
1442
} ZEND_HASH_FOREACH_END ();
1442
1443
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
+ }
1444
1448
ZEND_HASH_FOREACH_STR_KEY_PTR (& ce -> function_table , name , op_array ) {
1445
1449
if (op_array -> scope == ce && !(op_array -> fn_flags & ZEND_ACC_TRAIT_CLONE )) {
1446
1450
zend_optimize_op_array (op_array , & ctx );
@@ -1544,7 +1548,10 @@ int zend_optimize_script(zend_script *script, zend_long optimization_level, zend
1544
1548
zend_adjust_fcall_stack_size (op_array , & ctx );
1545
1549
} ZEND_HASH_FOREACH_END ();
1546
1550
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
+ }
1548
1555
ZEND_HASH_FOREACH_STR_KEY_PTR (& ce -> function_table , name , op_array ) {
1549
1556
if (op_array -> scope == ce && !(op_array -> fn_flags & ZEND_ACC_TRAIT_CLONE )) {
1550
1557
zend_adjust_fcall_stack_size (op_array , & ctx );
@@ -1553,7 +1560,10 @@ int zend_optimize_script(zend_script *script, zend_long optimization_level, zend
1553
1560
} ZEND_HASH_FOREACH_END ();
1554
1561
}
1555
1562
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
+ }
1557
1567
ZEND_HASH_FOREACH_STR_KEY_PTR (& ce -> function_table , name , op_array ) {
1558
1568
if (op_array -> scope != ce && op_array -> type == ZEND_USER_FUNCTION ) {
1559
1569
zend_op_array * orig_op_array =
0 commit comments