@@ -2261,21 +2261,24 @@ static void zend_short_circuiting_commit(uint32_t checkpoint, znode *result, zen
22612261 zend_op * opline = & CG (active_op_array )-> opcodes [opnum ];
22622262 opline -> op2 .opline_num = get_next_op_number ();
22632263 SET_NODE (opline -> result , result );
2264- opline -> extended_value =
2264+ opline -> extended_value | =
22652265 ast -> kind == ZEND_AST_ISSET ? ZEND_SHORT_CIRCUITING_CHAIN_ISSET :
22662266 ast -> kind == ZEND_AST_EMPTY ? ZEND_SHORT_CIRCUITING_CHAIN_EMPTY :
22672267 ZEND_SHORT_CIRCUITING_CHAIN_EXPR ;
22682268 zend_stack_del_top (& CG (short_circuiting_opnums ));
22692269 }
22702270}
22712271
2272- static void zend_emit_jmp_null (znode * obj_node )
2272+ static void zend_emit_jmp_null (znode * obj_node , uint32_t bp_type )
22732273{
22742274 uint32_t jmp_null_opnum = get_next_op_number ();
22752275 zend_op * opline = zend_emit_op (NULL , ZEND_JMP_NULL , obj_node , NULL );
22762276 if (opline -> op1_type == IS_CONST ) {
22772277 Z_TRY_ADDREF_P (CT_CONSTANT (opline -> op1 ));
22782278 }
2279+ if (bp_type == BP_VAR_IS ) {
2280+ opline -> extended_value |= ZEND_JMP_NULL_BP_VAR_IS ;
2281+ }
22792282 zend_stack_push (& CG (short_circuiting_opnums ), & jmp_null_opnum );
22802283}
22812284
@@ -2850,7 +2853,7 @@ static zend_op *zend_delayed_compile_prop(znode *result, zend_ast *ast, uint32_t
28502853 }
28512854 }
28522855 }
2853- zend_emit_jmp_null (& obj_node );
2856+ zend_emit_jmp_null (& obj_node , type );
28542857 }
28552858 }
28562859
@@ -4461,7 +4464,7 @@ static void zend_compile_method_call(znode *result, zend_ast *ast, uint32_t type
44614464 zend_short_circuiting_mark_inner (obj_ast );
44624465 zend_compile_expr (& obj_node , obj_ast );
44634466 if (nullsafe ) {
4464- zend_emit_jmp_null (& obj_node );
4467+ zend_emit_jmp_null (& obj_node , type );
44654468 }
44664469 }
44674470
0 commit comments