diff --git a/ext/opcache/jit/zend_jit_x86.dasc b/ext/opcache/jit/zend_jit_x86.dasc index a0df7bec5c8..b16fee22e39 100644 --- a/ext/opcache/jit/zend_jit_x86.dasc +++ b/ext/opcache/jit/zend_jit_x86.dasc @@ -8309,7 +8309,7 @@ static int zend_jit_bool_jmpznz(dasm_State **Dst, const zend_op *opline, uint32_ return 1; } - if (op1_info & MAY_BE_REF) { + if (opline->op1_type == IS_CV && (op1_info & MAY_BE_REF)) { | LOAD_ZVAL_ADDR FCARG1a, op1_addr | ZVAL_DEREF FCARG1a, op1_info op1_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FCARG1a, 0); diff --git a/ext/opcache/tests/jit/bool_not_001.phpt b/ext/opcache/tests/jit/bool_not_001.phpt new file mode 100644 index 00000000000..f220e36b032 --- /dev/null +++ b/ext/opcache/tests/jit/bool_not_001.phpt @@ -0,0 +1,21 @@ +--TEST-- +JIT BOOL_NOT: 001 Memory leak in case of reference to bool +--INI-- +opcache.enable=1 +opcache.enable_cli=1 +opcache.file_update_protection=0 +opcache.jit_buffer_size=1M +opcache.protect_memory=1 +opcache.jit=function +--SKIPIF-- + +--FILE-- + +--EXPECT-- +bool(false)