File tree 1 file changed +8
-1
lines changed
1 file changed +8
-1
lines changed Original file line number Diff line number Diff line change @@ -3029,7 +3029,14 @@ static zend_always_inline zend_result _zend_update_type_info(
3029
3029
break ;
3030
3030
case ZEND_ASSIGN_OBJ :
3031
3031
if (opline -> op1_type == IS_CV ) {
3032
- tmp = (t1 & (MAY_BE_REF |MAY_BE_OBJECT ))|MAY_BE_RC1 |MAY_BE_RCN ;
3032
+ zend_class_entry * ce = ssa_var_info [ssa_op -> op1_use ].ce ;
3033
+ bool add_rc = !ce
3034
+ || ce -> __set
3035
+ /* Non-default write_property may be set within create_object. */
3036
+ || ce -> create_object
3037
+ || ce -> default_object_handlers -> write_property != zend_std_write_property
3038
+ || ssa_var_info [ssa_op -> op1_use ].is_instanceof ;
3039
+ tmp = (t1 & (MAY_BE_REF |MAY_BE_OBJECT |MAY_BE_RC1 |MAY_BE_RCN ))|(add_rc ? (MAY_BE_RC1 |MAY_BE_RCN ) : 0 );
3033
3040
UPDATE_SSA_TYPE (tmp , ssa_op -> op1_def );
3034
3041
COPY_SSA_OBJ_TYPE (ssa_op -> op1_use , ssa_op -> op1_def );
3035
3042
}
You can’t perform that action at this time.
0 commit comments