@@ -802,6 +802,7 @@ zend_class_entry *zend_optimizer_get_class_entry(
802
802
ce = zend_hash_find_ptr (CG (class_table ), lcname );
803
803
if (ce
804
804
&& (ce -> type == ZEND_INTERNAL_CLASS
805
+ || (ce -> ce_flags & ZEND_ACC_PRELOADED )
805
806
|| (op_array && ce -> info .user .filename == op_array -> filename ))) {
806
807
return ce ;
807
808
}
@@ -846,11 +847,9 @@ const zend_class_constant *zend_fetch_class_const_info(
846
847
} else {
847
848
zend_class_entry * tmp = zend_hash_find_ptr (EG (class_table ), Z_STR_P (op1 + 1 ));
848
849
if (tmp != NULL ) {
849
- if (tmp -> type == ZEND_INTERNAL_CLASS ) {
850
- ce = tmp ;
851
- } else if (tmp -> type == ZEND_USER_CLASS
852
- && tmp -> info .user .filename
853
- && tmp -> info .user .filename == op_array -> filename ) {
850
+ if (tmp -> type == ZEND_INTERNAL_CLASS
851
+ || (tmp -> ce_flags & ZEND_ACC_PRELOADED )
852
+ || (tmp -> info .user .filename && tmp -> info .user .filename == op_array -> filename )) {
854
853
ce = tmp ;
855
854
}
856
855
}
@@ -902,9 +901,9 @@ zend_function *zend_optimizer_get_called_func(
902
901
} else if ((func = zend_hash_find_ptr (EG (function_table ), function_name )) != NULL ) {
903
902
if (func -> type == ZEND_INTERNAL_FUNCTION ) {
904
903
return func ;
905
- } else if (func -> type == ZEND_USER_FUNCTION &&
906
- func -> op_array .filename &&
907
- func -> op_array .filename == op_array -> filename ) {
904
+ } else if (func -> type == ZEND_USER_FUNCTION
905
+ && (( func -> op_array .fn_flags & ZEND_ACC_PRELOADED )
906
+ || ( func -> op_array . filename && func -> op_array .filename == op_array -> filename )) ) {
908
907
return func ;
909
908
}
910
909
}
@@ -920,9 +919,9 @@ zend_function *zend_optimizer_get_called_func(
920
919
} else if ((func = zend_hash_find_ptr (EG (function_table ), Z_STR_P (function_name ))) != NULL ) {
921
920
if (func -> type == ZEND_INTERNAL_FUNCTION ) {
922
921
return func ;
923
- } else if (func -> type == ZEND_USER_FUNCTION &&
924
- func -> op_array .filename &&
925
- func -> op_array .filename == op_array -> filename ) {
922
+ } else if (func -> type == ZEND_USER_FUNCTION
923
+ && (( func -> op_array .fn_flags & ZEND_ACC_PRELOADED )
924
+ || ( func -> op_array . filename && func -> op_array .filename == op_array -> filename )) ) {
926
925
return func ;
927
926
}
928
927
}
0 commit comments