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