diff --git a/ext/opcache/jit/zend_jit_ir.c b/ext/opcache/jit/zend_jit_ir.c index 224f419c7e7..999b08b76a0 100644 --- a/ext/opcache/jit/zend_jit_ir.c +++ b/ext/opcache/jit/zend_jit_ir.c @@ -14723,13 +14723,7 @@ static int zend_jit_incdec_obj(zend_jit_ctx *jit, jit_ZVAL_ADDR(jit, op1_addr), ir_CONST_ADDR(ZSTR_VAL(name))); - may_throw = 1; - - if ((opline->op1_type & (IS_VAR|IS_TMP_VAR)) && !delayed_fetch_this && !op1_indirect) { - ir_END_list(end_inputs); - } else { - ir_IJMP(jit_STUB_ADDR(jit, jit_stub_exception_handler)); - } + ir_IJMP(jit_STUB_ADDR(jit, jit_stub_exception_handler)); ir_IF_TRUE(if_obj); } } diff --git a/ext/opcache/tests/jit/inc_obj_006.phpt b/ext/opcache/tests/jit/inc_obj_006.phpt new file mode 100644 index 00000000000..00b8d01c3be --- /dev/null +++ b/ext/opcache/tests/jit/inc_obj_006.phpt @@ -0,0 +1,31 @@ +--TEST-- +PRE_INC_OBJ: 006 +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_update_protection=0 +opcache.jit_buffer_size=1M +opcache.protect_memory=1 +--FILE-- +foo; + } + + function __set($x, $y) { + echo "set($y)\n"; + } +}; + +--$a->x->y; +?> +DONE +--EXPECTF-- +Fatal error: Uncaught Error: Attempt to increment/decrement property "y" on int in %sinc_obj_006.php:14 +Stack trace: +#0 {main} + thrown in %sinc_obj_006.php on line 14 +